diff --git a/.github/workflows/dagger-ci.yml b/.github/workflows/dagger-ci.yml index 03d3f90b..1492b19e 100644 --- a/.github/workflows/dagger-ci.yml +++ b/.github/workflows/dagger-ci.yml @@ -2,7 +2,7 @@ name: "Dagger CI" on: push: - branches: [main] + branches: [ main ] paths: - '**.sh' - '**.bash' @@ -14,7 +14,7 @@ on: - 'go.sum' - '.github/workflows/dagger-ci.yml' pull_request: - branches: [main] + branches: [ main ] paths: - '**.sh' - '**.bash' @@ -33,11 +33,10 @@ jobs: build: runs-on: ubuntu-latest steps: - - - name: Checkout + - name: Checkout uses: actions/checkout@v2 - - - name: Dagger CI + + - name: Dagger CI uses: dagger/dagger-for-github@v2 with: workdir: ci diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index e6c4d84c..78332524 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -2,7 +2,7 @@ name: "Test Integration" on: push: - branches: [main] + branches: [ main ] paths: - "**.sh" - "**.bash" @@ -16,7 +16,7 @@ on: - "!docs/**" pull_request: - branches: [main] + branches: [ main ] paths: - "**.sh" - "**.bash" @@ -67,9 +67,6 @@ jobs: - name: Test env: DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} - # TODO: https://github.com/dagger/dagger/pull/1341 - # DAGGER_CACHE_TO: "type=gha,mode=max,scope=test-integration" - # DAGGER_CACHE_FROM: "type=gha,mode=max,scope=test-integration" run: | env - make core-integration + make core-integration \ No newline at end of file diff --git a/.github/workflows/test-universe.yml b/.github/workflows/test-universe.yml index 212a273d..dcfb1b2c 100644 --- a/.github/workflows/test-universe.yml +++ b/.github/workflows/test-universe.yml @@ -57,8 +57,5 @@ jobs: uses: crazy-max/ghaction-github-runtime@v1 - name: Test - env: - DAGGER_CACHE_TO: "type=gha,mode=max,scope=test-universe" - DAGGER_CACHE_FROM: "type=gha,mode=max,scope=test-universe" run: | make universe-test diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..42fe99a4 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,29 @@ +# CODEOWNERS is a tool to encode PR approval rules. +# +# When a PR is opened, at least one code owner is required to approve it +# before being merged. +# +# It does **not**: +# +# - Limit reviewers: Everyone is welcome and encouraged to review any PR. +# But at least one CODEOWNER must approve before merging. +# +# - Limit contributions or ownership: Every maintainer is responsible for +# the entire project. CODEOWNERs are there to review PRs for +# consistency. +# +# By default, any maintainer can approve any PR. There's a couple of +# exceptions for consistency/specialty. + +# Default owners for everything in the repo +# Later matches takes precedence +* @dagger/maintainers + +# Core CUE API +/pkg/dagger.io/ @helderco @shykes + +# Universe +/pkg/universe.dagger.io/ @helderco @shykes + +# Documentation website +/website/ @slumbering diff --git a/Makefile b/Makefile index 4cf048ec..31d3d09b 100644 --- a/Makefile +++ b/Makefile @@ -93,4 +93,4 @@ web: # Run the website locally .PHONY: todo todo: # Find all TODO items - grep -r -A 1 "TODO:" $(CURDIR) + grep -r -A 1 "TODO:" $(CURDIR) \ No newline at end of file diff --git a/client/client.go b/client/client.go index bd8cc25b..071ea373 100644 --- a/client/client.go +++ b/client/client.go @@ -7,7 +7,7 @@ import ( "strings" "sync" - "github.com/containerd/containerd/platforms" + "github.com/google/uuid" "go.opentelemetry.io/otel/trace" "golang.org/x/sync/errgroup" @@ -18,7 +18,6 @@ import ( // buildkit bk "github.com/moby/buildkit/client" _ "github.com/moby/buildkit/client/connhelper/dockercontainer" // import the container connection driver - "github.com/moby/buildkit/client/llb" bkgw "github.com/moby/buildkit/frontend/gateway/client" "github.com/moby/buildkit/session" @@ -72,7 +71,7 @@ func New(ctx context.Context, host string, cfg Config) (*Client, error) { }, nil } -type DoFunc func(context.Context, solver.Solver) error +type DoFunc func(context.Context, *solver.Solver) error // FIXME: return completed *Route, instead of *compiler.Value func (c *Client) Do(ctx context.Context, pctx *plancontext.Context, fn DoFunc) error { @@ -96,6 +95,19 @@ func (c *Client) Do(ctx context.Context, pctx *plancontext.Context, fn DoFunc) e return eg.Wait() } +func convertCacheOptionEntries(ims []bk.CacheOptionsEntry) []bkgw.CacheOptionsEntry { + convertIms := []bkgw.CacheOptionsEntry{} + + for _, im := range ims { + convertIm := bkgw.CacheOptionsEntry{ + Type: im.Type, + Attrs: im.Attrs, + } + convertIms = append(convertIms, convertIm) + } + return convertIms +} + func (c *Client) buildfn(ctx context.Context, pctx *plancontext.Context, fn DoFunc, ch chan *bk.SolveStatus) error { wg := sync.WaitGroup{} @@ -156,29 +168,31 @@ func (c *Client) buildfn(ctx context.Context, pctx *plancontext.Context, fn DoFu resp, err := c.c.Build(ctx, opts, "", func(ctx context.Context, gw bkgw.Client) (*bkgw.Result, error) { s := solver.New(solver.Opts{ - Control: c.c, - Gateway: gw, - Events: eventsCh, - Auth: auth, - NoCache: c.cfg.NoCache, + Control: c.c, + Gateway: gw, + Events: eventsCh, + Auth: auth, + NoCache: c.cfg.NoCache, + CacheImports: convertCacheOptionEntries(opts.CacheImports), }) // Close events channel defer s.Stop() // Compute output overlay + res := bkgw.NewResult() if fn != nil { - if err := fn(ctx, s); err != nil { + err := fn(ctx, s) + if err != nil { return nil, compiler.Err(err) } - } - ref, err := s.Solve(ctx, llb.Scratch(), platforms.DefaultSpec()) - if err != nil { - return nil, err + refs := s.References() + // Add functions layers + for _, ref := range refs { + res.AddRef(uuid.New().String(), ref) + } } - res := bkgw.NewResult() - res.SetRef(ref) return res, nil }, buildCh) if err != nil { diff --git a/cmd/dagger/cmd/do.go b/cmd/dagger/cmd/do.go index ff6f6a27..c11c2313 100644 --- a/cmd/dagger/cmd/do.go +++ b/cmd/dagger/cmd/do.go @@ -67,7 +67,7 @@ var doCmd = &cobra.Command{ Value: target.String(), }) - err = cl.Do(ctx, p.Context(), func(ctx context.Context, s solver.Solver) error { + err = cl.Do(ctx, p.Context(), func(ctx context.Context, s *solver.Solver) error { return p.Do(ctx, target, s) }) diff --git a/docs/1001-install.md b/docs/1001-install.md index 1d0db574..3c7413d9 100644 --- a/docs/1001-install.md +++ b/docs/1001-install.md @@ -10,9 +10,9 @@ slug: /1001/install/ ::: -## Option 1: Use Homebrew (Mac OS only) +## Option 1 (Mac OS and Linux): Use Homebrew -From your Mac OS terminal, run the following command: +From a terminal, run the following command: ```shell brew install dagger/tap/dagger @@ -25,7 +25,7 @@ brew update brew upgrade dagger ``` -## Option 2: Run a shell script +## Option 2 (Mac OS and Linux): Run a shell script From a terminal, run the following command: diff --git a/docs/getting-started/1200-local-dev.md b/docs/getting-started/1200-local-dev.md index a3b1fda7..1423c3ba 100644 --- a/docs/getting-started/1200-local-dev.md +++ b/docs/getting-started/1200-local-dev.md @@ -1,5 +1,5 @@ --- -slug: / +slug: /1200/local-dev displayed_sidebar: europa --- @@ -209,13 +209,10 @@ It becomes even more obvious when the change is not as straightforward as knowin -We assume that you have [curl](https://curl.se/windows/) installed. -If you do, you can install `dagger` with a few commands. From a powershell terminal, run: +From a powershell terminal, run: ```shell -curl https://dl.dagger.io/dagger/install.ps1 -OutFile install.ps1 -./install.ps1 -rm install.ps1 +Invoke-WebRequest -UseBasicParsing -Uri https://dl.dagger.io/dagger/install.ps1 | Invoke-Expression ``` We try to move the dagger binary under `C:\Windows\System32` but diff --git a/docs/getting-started/1220-vs.md b/docs/getting-started/1220-vs.md new file mode 100644 index 00000000..16b85f1a --- /dev/null +++ b/docs/getting-started/1220-vs.md @@ -0,0 +1,47 @@ +--- +slug: /1220/vs +displayed_sidebar: europa +--- + +# Dagger vs. Other Software + +## Dagger vs. CI (Github Actions, Gitlab, CircleCI, Jenkins, etc.) + +Dagger does not replace your CI: it improves it by adding a portable development layer on top of it. + +* Dagger runs on all major CI products. This *reduces CI lock-in*: you can change CI without rewriting all your pipelines. +* Dagger also runs on your dev machine. This allows *dev/CI parity*: the same pipelines can be used in CI and development. + +## Dagger vs. PaaS (Heroku, Firebase, etc.) + +Dagger is not a PaaS, but you can use it to add PaaS-like features to your CICD pipelines: + +* A simple deployment abstraction for the developer +* A catalog of possible customizations, managed by the platform team +* On-demand staging or development environments + +Using Dagger is a good way to get many of the benefits of a PaaS (developer productivity and peace of mind), +without giving up the benefits of custom CICD pipelines (full control over your infrastructure and tooling). + +## Dagger vs. artisanal deploy scripts + +Most applications have a custom deploy script that usually gets the job done, but is painful to change and troubleshoot. + +Using Dagger, you have two options: + +1. You can *replace* your script with a DAG that is better in every way: more features, more reliable, faster, easier to read, improve, and debug. +2. You can *extend* your script by wrapping it, as-is, into a DAG. This allows you to start using Dagger right away, and worry about rewrites later. + +## Dagger vs. Infrastructure as Code (Terraform, Pulumi, Cloudformation, CDK) + +Dagger is the perfect complement to an IaC tool. + +* IaC tools help infrastructure teams answer questions like: what is the current state of my infrastructure? What is its desired state? And how do I get there? +* Dagger helps CICD teams answer question like: what work needs to be done to deliver my application, in what order, and how do I orchestrate it? + +It is very common for a Dagger configuration to integrate with at least one IaC tool. + +## Dagger vs. Build Systems (Make, Maven, Bazel, Npm/Yarn, Docker Build, etc.) + +Dagger is complementary to build systems. Most Dagger configurations involve integrating with at least one specialized build. +If several build systems are involved, Dagger helps integrate them into a unified graph. diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md new file mode 100644 index 00000000..35acded1 --- /dev/null +++ b/docs/getting-started/index.md @@ -0,0 +1,15 @@ +--- +slug: / +displayed_sidebar: europa +--- + +# Getting Started + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; + +Run your CI/CD pipelines locally, then easily integrate them with any CI environment. + + +``` diff --git a/docs/learn/tests/helpers.bash b/docs/learn/tests/helpers.bash index 96408a91..4eaf18ea 100644 --- a/docs/learn/tests/helpers.bash +++ b/docs/learn/tests/helpers.bash @@ -28,6 +28,12 @@ common_setup() { export DAGGER_SANDBOX dagger init --project "$DAGGER_SANDBOX" + if [ -n "$GITHUB_ACTIONS" ]; + then + export DAGGER_CACHE_TO="type=gha,mode=max,scope=docs-tests-$BATS_TEST_NAME" + export DAGGER_CACHE_FROM="type=gha,scope=docs-tests-$BATS_TEST_NAME" + fi + # allows the use of `sops` SOPS_AGE_KEY_FILE=~/.config/dagger/keys.txt export SOPS_AGE_KEY_FILE diff --git a/docs/tests/core-concepts/plan/structure.cue.fragment b/docs/tests/core-concepts/plan/structure.cue.fragment index 67e2d227..f17656b7 100644 --- a/docs/tests/core-concepts/plan/structure.cue.fragment +++ b/docs/tests/core-concepts/plan/structure.cue.fragment @@ -1,5 +1,5 @@ // ... -// A plan has pre-requisited that we cover below. +// A plan has pre-requisites that we cover below. // For now we focus on the dagger.#Plan structure. // ... diff --git a/docs/use-cases/1211-go-docker-swarm.md b/docs/use-cases/1211-go-docker-swarm.md index d2ad2629..8b971c91 100644 --- a/docs/use-cases/1211-go-docker-swarm.md +++ b/docs/use-cases/1211-go-docker-swarm.md @@ -15,7 +15,7 @@ The production setup is a multi-node Docker Swarm cluster running on AWS. The Particubes team chose Dagger for continuous deployment because it was the easiest way of integrating GitHub with Docker Swarm. Every commit to the main branch goes straight to [docs.particubes.com](https://docs.particubes.com) via a Dagger pipeline that runs in GitHub Actions. Let us see how the Particubes Dagger plan fits together. -### Actions API +## Actions API This is a high level overview of all actions in the Particubes docs Dagger plan: @@ -23,7 +23,7 @@ This is a high level overview of all actions in the Particubes docs Dagger plan: We can see all available actions in a Plan by running the following command: -```bash +```console $ dagger do Execute a dagger action. @@ -34,7 +34,7 @@ Available Actions: deploy Deploy a container image ``` -### Client API +## Client API Dagger actions usually need to interact with the host environment where the Dagger client runs. The Particubes' plan uses environment variables and the filesystem. @@ -45,20 +45,22 @@ This is an overview of all client interactions for this plan: This is what the above looks like in the Dagger plan config: ```cue file=../tests/use-cases/go-docker-swarm/client-api.cue.fragment + ``` -### The *build* Action +## The `build` Action -This is a more in-depth overview of the *build* action and how it interacts with the client in the Particubes docs Dagger plan: +This is a more in-depth overview of the _build_ action and how it interacts with the client in the Particubes docs Dagger plan: ![build action](/img/use-cases/build-action.png) This is what the above looks like in the Dagger plan config: ```cue file=../tests/use-cases/go-docker-swarm/build-action.cue.fragment + ``` -### Github Action integration +## Github Action integration This is the GitHub Actions workflow config that invokes `dagger`, which in turn runs the full plan: @@ -102,16 +104,17 @@ dagger do This is the first step that enabled the Particubes team to have the same CI/CD experience everywhere. -### Full Particubes docs Dagger plan +## Full Particubes docs Dagger plan This is the entire plan running on Particubes' CI: ```cue file=../tests/use-cases/go-docker-swarm/full/particubes.docs.cue + ``` -### What comes next ? +## What comes next ? -Particubes' team suggested that we create a `dev` action with *hot reload*, that way Dagger would even asbtract away the ramp-up experience when developing the doc +Particubes' team suggested that we create a `dev` action with _hot reload_, that way Dagger would even asbtract away the ramp-up experience when developing the doc :::tip The latest version of this pipeline can be found at [github.com/voxowl/particubes/pull/144](https://github.com/voxowl/particubes/blob/2af173596729929cfb7a7a1f78f1ec0d8b685e5e/lua-docs/docs.cue) diff --git a/pkg/dagger.io/dagger/core/fs.cue b/pkg/dagger.io/dagger/core/fs.cue index 77efee8c..3aa35479 100644 --- a/pkg/dagger.io/dagger/core/fs.cue +++ b/pkg/dagger.io/dagger/core/fs.cue @@ -76,6 +76,10 @@ import "dagger.io/dagger" source: string | *"/" // Destination path (optional) dest: string | *"/" + // Optionally exclude certain files + include: [...string] + // Optionally include certain files + exclude: [...string] // Output of the operation output: dagger.#FS } diff --git a/pkg/universe.dagger.io/README.md b/pkg/universe.dagger.io/README.md index 29e16d6c..81e66b96 100644 --- a/pkg/universe.dagger.io/README.md +++ b/pkg/universe.dagger.io/README.md @@ -46,7 +46,7 @@ This table compares Dagger core packages, Dagger Universe packages, and the over ### Docker API -*Import path: [`universe.dagger.io/docker`](./universe/docker)* +*Import path: [`universe.dagger.io/docker`](./docker)* The `docker` package is a native Cue API for Docker. You can use it to build, run, push and pull Docker containers directly from Cue. diff --git a/pkg/universe.dagger.io/bats_helpers.bash b/pkg/universe.dagger.io/bats_helpers.bash index b8609ebe..d38d8876 100644 --- a/pkg/universe.dagger.io/bats_helpers.bash +++ b/pkg/universe.dagger.io/bats_helpers.bash @@ -15,6 +15,13 @@ common_setup() { DAGGER_LOG_FORMAT="plain" export DAGGER_LOG_FORMAT + export DAGGER_LOG_LEVEL="debug" + if [ -n "$GITHUB_ACTIONS" ]; + then + export DAGGER_CACHE_TO="type=gha,mode=max,scope=universe-tests-$BATS_TEST_NAME" + export DAGGER_CACHE_FROM="type=gha,scope=universe-tests-$BATS_TEST_NAME" + fi + # cd into the directory containing the bats file cd "$BATS_TEST_DIRNAME" || exit 1 } diff --git a/pkg/universe.dagger.io/docker/build.cue b/pkg/universe.dagger.io/docker/build.cue index d578e79e..9ffddd19 100644 --- a/pkg/universe.dagger.io/docker/build.cue +++ b/pkg/universe.dagger.io/docker/build.cue @@ -45,6 +45,10 @@ import ( contents: dagger.#FS source: string | *"/" dest: string | *"/" + // Optionally exclude certain files + include: [...string] + // Optionally include certain files + exclude: [...string] // Execute copy operation _copy: core.#Copy & { @@ -52,6 +56,8 @@ import ( "contents": contents "source": source "dest": dest + "include": include + "exclude": exclude } output: #Image & { diff --git a/pkg/universe.dagger.io/package.json b/pkg/universe.dagger.io/package.json index bc23fdf5..a6d7bbba 100644 --- a/pkg/universe.dagger.io/package.json +++ b/pkg/universe.dagger.io/package.json @@ -1,7 +1,7 @@ { "license": "Apache-2.0", "scripts": { - "test": "bats --report-formatter junit --jobs 4 $(find . -type f -name '*.bats' -not -path '*/node_modules/*')" + "test": "bats --report-formatter junit --print-output-on-failure --jobs 4 $(find . -type f -name '*.bats' -not -path '*/node_modules/*')" }, "devDependencies": { "bats": "^1.5.0", diff --git a/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/example.cue b/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/example.cue new file mode 100644 index 00000000..e4c16c36 --- /dev/null +++ b/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/example.cue @@ -0,0 +1,24 @@ +package rawkode_pulumi_example + +import ( + "dagger.io/dagger" + "universe.dagger.io/x/david@rawkode.dev/pulumi" +) + +dagger.#Plan & { + client: { + filesystem: "./": read: contents: dagger.#FS + env: { + PULUMI_ACCESS_TOKEN: dagger.#Secret + // If not using Pulumi SaaS, use CONFIG_PASSPHRASE + // PULUMI_CONFIG_PASSPHRASE: dagger.#Secret + } + } + actions: rawkode: pulumi.#Up & { + stack: "test" + stackCreate: true + runtime: "nodejs" + accessToken: client.env.PULUMI_ACCESS_TOKEN + source: client.filesystem."./".read.contents + } +} diff --git a/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/pulumi.cue b/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/pulumi.cue new file mode 100644 index 00000000..d8bc4a67 --- /dev/null +++ b/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/pulumi.cue @@ -0,0 +1,80 @@ +// Run a Pulumi program +package pulumi + +import ( + "dagger.io/dagger" + "dagger.io/dagger/core" + "universe.dagger.io/docker" + "universe.dagger.io/bash" +) + +// Run a `pulumi up` +#Up: { + // Source code of Pulumi program + source: dagger.#FS + + // Pulumi version + version: string | *"latest" + + // Pulumi runtime used for this Pulumi program + runtime: "dotnet" | "go" | "nodejs" | "python" + + // Name of your Pulumi stack + // Example: "production" + stack: string + + // Create the stack if it doesn't exist + stackCreate: *false | true + + // API token if you want to use Pulumi SaaS state backend + accessToken?: dagger.#Secret + + // Passphrase if you want to use local state backend (Cached by Dagger in buildkit) + passphrase?: dagger.#Secret + + // Build a docker image to run the netlify client + _pull_image: docker.#Pull & { + source: "pulumi/pulumi-\(runtime):\(version)" + } + + // Run Pulumi up + container: bash.#Run & { + input: *_pull_image.output | docker.#Image + script: { + _load: core.#Source & { + path: "." + include: ["*.sh"] + } + directory: _load.output + filename: "up.sh" + } + env: { + PULUMI_STACK: stack + PULUMI_RUNTIME: runtime + + if true == stackCreate { + PULUMI_STACK_CREATE: "1" + } + + if passphrase != _|_ { + PULUMI_CONFIG_PASSPHRASE: passphrase + } + if accessToken != _|_ { + PULUMI_ACCESS_TOKEN: accessToken + } + } + workdir: "/src" + mounts: { + src: { + dest: "/src" + contents: source + } + node_modules: { + dest: "/src/node_modules" + contents: core.#CacheDir & { + id: "pulumi-npm-cache" + } + } + } + } +} diff --git a/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/up.sh b/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/up.sh new file mode 100644 index 00000000..0202d969 --- /dev/null +++ b/pkg/universe.dagger.io/x/david@rawkode.dev/pulumi/up.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +set -xeo pipefail + +if test -v PULUMI_CONFIG_PASSPHRASE || test -v PULUMI_CONFIG_PASSPHRASE_FILE; then + echo "PULUMI_CONFIG_PASSPHRASE is set, using a local login" + pulumi login --local +fi + +# Using Pulumi SaaS +# We need to check for an existing stack with the name +# If it exists, refresh the config +# If it doesn't, create the stack +if test -v PULUMI_ACCESS_TOKEN; then + if (pulumi stack ls | grep -e "^${STACK_NAME}"); then + echo "Stack exists, let's refresh" + pulumi stack select "${PULUMI_STACK}" + # Could be first deployment, so let's not worry about this failing + pulumi config refresh --force || true + else + echo "Stack does not exist, let's create" + pulumi stack init "${PULUMI_STACK}" + fi +else + # Not using Pulumi SaaS, relying on local stack files + if test -v PULUMI_STACK_CREATE && test ! -f "Pulumi.${PULUMI_STACK}.yaml"; then + pulumi stack init "${PULUMI_STACK}" + fi +fi + +case "$PULUMI_RUNTIME" in + nodejs) + npm install + ;; + + *) + echo -n "unknown" + ;; +esac + +pulumi up --stack "${PULUMI_STACK}" --yes diff --git a/plan/plan.go b/plan/plan.go index 04adf17a..dc4cc0df 100644 --- a/plan/plan.go +++ b/plan/plan.go @@ -168,7 +168,7 @@ func (p *Plan) prepare(ctx context.Context) error { } // Do executes an action in the plan -func (p *Plan) Do(ctx context.Context, path cue.Path, s solver.Solver) error { +func (p *Plan) Do(ctx context.Context, path cue.Path, s *solver.Solver) error { ctx, span := otel.Tracer("dagger").Start(ctx, "plan.Up") defer span.End() diff --git a/plan/runner.go b/plan/runner.go index 219f5fbe..a59e80ac 100644 --- a/plan/runner.go +++ b/plan/runner.go @@ -22,13 +22,13 @@ import ( type Runner struct { pctx *plancontext.Context target cue.Path - s solver.Solver + s *solver.Solver tasks sync.Map mirror *compiler.Value l sync.Mutex } -func NewRunner(pctx *plancontext.Context, target cue.Path, s solver.Solver) *Runner { +func NewRunner(pctx *plancontext.Context, target cue.Path, s *solver.Solver) *Runner { return &Runner{ pctx: pctx, target: target, diff --git a/plan/task/clientcommand.go b/plan/task/clientcommand.go index 50858c67..eab1f0bf 100644 --- a/plan/task/clientcommand.go +++ b/plan/task/clientcommand.go @@ -23,7 +23,7 @@ func init() { type clientCommandTask struct { } -func (t clientCommandTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t clientCommandTask) Run(ctx context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { var opts struct { Name string Args []string diff --git a/plan/task/clientenv.go b/plan/task/clientenv.go index 5b51c483..52fe75db 100644 --- a/plan/task/clientenv.go +++ b/plan/task/clientenv.go @@ -19,7 +19,7 @@ func init() { type clientEnvTask struct { } -func (t clientEnvTask) Run(ctx context.Context, pctx *plancontext.Context, _ solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t clientEnvTask) Run(ctx context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { log.Ctx(ctx).Debug().Msg("loading environment variables") fields, err := v.Fields() diff --git a/plan/task/clientfilesystemread.go b/plan/task/clientfilesystemread.go index 792a217b..3dc6a5e3 100644 --- a/plan/task/clientfilesystemread.go +++ b/plan/task/clientfilesystemread.go @@ -18,17 +18,23 @@ func init() { Register("ClientFilesystemRead", func() Task { return &clientFilesystemReadTask{} }) } -type clientFilesystemReadTask struct { -} +type clientFilesystemReadTask struct{} -func (t clientFilesystemReadTask) PreRun(ctx context.Context, pctx *plancontext.Context, v *compiler.Value) error { +func (t clientFilesystemReadTask) PreRun(_ context.Context, pctx *plancontext.Context, v *compiler.Value) error { path, err := t.parsePath(v) if err != nil { return err } - if _, err := os.Stat(path); errors.Is(err, os.ErrNotExist) { + isFS := plancontext.IsFSValue(v.Lookup("contents")) + + switch pi, err := os.Stat(path); { + case errors.Is(err, os.ErrNotExist): return fmt.Errorf("path %q does not exist", path) + case !pi.IsDir() && isFS: + return fmt.Errorf("path %q is not a directory", path) + case pi.IsDir() && !isFS: + return fmt.Errorf("path %q cannot be a directory", path) } if plancontext.IsFSValue(v.Lookup("contents")) { @@ -38,7 +44,7 @@ func (t clientFilesystemReadTask) PreRun(ctx context.Context, pctx *plancontext. return nil } -func (t clientFilesystemReadTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t clientFilesystemReadTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { path, err := t.parsePath(v) if err != nil { return nil, err @@ -70,7 +76,7 @@ func (t clientFilesystemReadTask) parsePath(v *compiler.Value) (path string, err return } -func (t clientFilesystemReadTask) readContents(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value, path string) (interface{}, error) { +func (t clientFilesystemReadTask) readContents(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value, path string) (interface{}, error) { lg := log.Ctx(ctx) contents := v.Lookup("contents") @@ -97,7 +103,7 @@ func (t clientFilesystemReadTask) readContents(ctx context.Context, pctx *planco return nil, fmt.Errorf("unsupported type %q", k) } -func (t clientFilesystemReadTask) readFS(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value, path string) (*compiler.Value, error) { +func (t clientFilesystemReadTask) readFS(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value, path string) (*compiler.Value, error) { var dir struct { Include []string Exclude []string diff --git a/plan/task/clientfilesystemwrite.go b/plan/task/clientfilesystemwrite.go index 1ccbb325..dc0994b1 100644 --- a/plan/task/clientfilesystemwrite.go +++ b/plan/task/clientfilesystemwrite.go @@ -21,7 +21,7 @@ func init() { type clientFilesystemWriteTask struct { } -func (t clientFilesystemWriteTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t clientFilesystemWriteTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { path, err := v.Lookup("path").String() if err != nil { return nil, err @@ -39,7 +39,7 @@ func (t clientFilesystemWriteTask) Run(ctx context.Context, pctx *plancontext.Co return compiler.NewValue(), nil } -func (t clientFilesystemWriteTask) writeContents(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value, path string) error { +func (t clientFilesystemWriteTask) writeContents(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value, path string) error { lg := log.Ctx(ctx) contents := v.Lookup("contents") @@ -79,7 +79,7 @@ func (t clientFilesystemWriteTask) writeContents(ctx context.Context, pctx *plan return fmt.Errorf("unsupported type %q", k) } -func (t clientFilesystemWriteTask) writeFS(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value, path string) error { +func (t clientFilesystemWriteTask) writeFS(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value, path string) error { contents, err := pctx.FS.FromValue(v) if err != nil { return err diff --git a/plan/task/clientnetwork.go b/plan/task/clientnetwork.go index 7b1330b8..270cb7b7 100644 --- a/plan/task/clientnetwork.go +++ b/plan/task/clientnetwork.go @@ -20,7 +20,7 @@ func init() { type clientNetwork struct { } -func (t clientNetwork) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t clientNetwork) Run(ctx context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) addr, err := v.Lookup("address").String() diff --git a/plan/task/clientplatform.go b/plan/task/clientplatform.go index 4fc2ad06..a2bc1169 100644 --- a/plan/task/clientplatform.go +++ b/plan/task/clientplatform.go @@ -16,7 +16,7 @@ func init() { type clientPlatformTask struct { } -func (t clientPlatformTask) Run(ctx context.Context, pctx *plancontext.Context, _ solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t clientPlatformTask) Run(_ context.Context, _ *plancontext.Context, _ *solver.Solver, _ *compiler.Value) (*compiler.Value, error) { return compiler.NewValue().FillFields(map[string]interface{}{ "os": runtime.GOOS, "arch": runtime.GOARCH, diff --git a/plan/task/copy.go b/plan/task/copy.go index dc6b8995..f2c759d7 100644 --- a/plan/task/copy.go +++ b/plan/task/copy.go @@ -16,7 +16,7 @@ func init() { type copyTask struct { } -func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { var err error input, err := pctx.FS.FromValue(v.Lookup("input")) @@ -49,18 +49,31 @@ func (t *copyTask) Run(ctx context.Context, pctx *plancontext.Context, s solver. return nil, err } + var filters struct { + Include []string + Exclude []string + } + + if err := v.Decode(&filters); err != nil { + return nil, err + } + + // FIXME: allow more configurable llb options + // For now we define the following convenience presets. + opts := &llb.CopyInfo{ + CopyDirContentsOnly: true, + CreateDestPath: true, + AllowWildcard: true, + IncludePatterns: filters.Include, + ExcludePatterns: filters.Exclude, + } + outputState := inputState.File( llb.Copy( contentsState, sourcePath, destPath, - // FIXME: allow more configurable llb options - // For now we define the following convenience presets: - &llb.CopyInfo{ - CopyDirContentsOnly: true, - CreateDestPath: true, - AllowWildcard: true, - }, + opts, ), withCustomName(v, "Copy %s %s", sourcePath, destPath), ) diff --git a/plan/task/decodesecret.go b/plan/task/decodesecret.go index c7e9906d..2c0a4aa9 100644 --- a/plan/task/decodesecret.go +++ b/plan/task/decodesecret.go @@ -20,7 +20,7 @@ func init() { type decodeSecretTask struct { } -func (c *decodeSecretTask) Run(ctx context.Context, pctx *plancontext.Context, _ solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *decodeSecretTask) Run(ctx context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) lg.Debug().Msg("decoding secret") diff --git a/plan/task/diff.go b/plan/task/diff.go index 5adbf709..fcb1b256 100644 --- a/plan/task/diff.go +++ b/plan/task/diff.go @@ -16,7 +16,7 @@ func init() { type diffTask struct { } -func (t diffTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *diffTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lowerFS, err := pctx.FS.FromValue(v.Lookup("lower")) if err != nil { return nil, err diff --git a/plan/task/dockerfile.go b/plan/task/dockerfile.go index 1254114f..4a8f1712 100644 --- a/plan/task/dockerfile.go +++ b/plan/task/dockerfile.go @@ -28,7 +28,7 @@ func init() { type dockerfileTask struct { } -func (t *dockerfileTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *dockerfileTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) auths, err := v.Lookup("auth").Fields() if err != nil { diff --git a/plan/task/exec.go b/plan/task/exec.go index c5e3f16e..3f9b3d9e 100644 --- a/plan/task/exec.go +++ b/plan/task/exec.go @@ -20,7 +20,7 @@ func init() { type execTask struct { } -func (t execTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *execTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { // Get input state input, err := pctx.FS.FromValue(v.Lookup("input")) if err != nil { @@ -52,7 +52,7 @@ func (t execTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.S }) } -func (t execTask) getRunOpts(v *compiler.Value, pctx *plancontext.Context) ([]llb.RunOption, error) { +func (t *execTask) getRunOpts(v *compiler.Value, pctx *plancontext.Context) ([]llb.RunOption, error) { opts := []llb.RunOption{} var cmd struct { Args []string @@ -141,7 +141,7 @@ func (t execTask) getRunOpts(v *compiler.Value, pctx *plancontext.Context) ([]ll return opts, nil } -func (t execTask) mountAll(pctx *plancontext.Context, mounts *compiler.Value) ([]llb.RunOption, error) { +func (t *execTask) mountAll(pctx *plancontext.Context, mounts *compiler.Value) ([]llb.RunOption, error) { opts := []llb.RunOption{} fields, err := mounts.Fields() if err != nil { @@ -165,7 +165,7 @@ func (t execTask) mountAll(pctx *plancontext.Context, mounts *compiler.Value) ([ return opts, err } -func (t execTask) mount(pctx *plancontext.Context, dest string, mnt *compiler.Value) (llb.RunOption, error) { +func (t *execTask) mount(pctx *plancontext.Context, dest string, mnt *compiler.Value) (llb.RunOption, error) { typ, err := mnt.Lookup("type").String() if err != nil { return nil, err diff --git a/plan/task/export.go b/plan/task/export.go index 92c7d9df..53f557e4 100644 --- a/plan/task/export.go +++ b/plan/task/export.go @@ -25,7 +25,7 @@ func init() { type exportTask struct { } -func (t exportTask) PreRun(ctx context.Context, pctx *plancontext.Context, v *compiler.Value) error { +func (t exportTask) PreRun(_ context.Context, pctx *plancontext.Context, v *compiler.Value) error { dir, err := os.MkdirTemp("", "dagger-export-*") if err != nil { return err @@ -37,7 +37,7 @@ func (t exportTask) PreRun(ctx context.Context, pctx *plancontext.Context, v *co return nil } -func (t exportTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t exportTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) dir := pctx.TempDirs.Get(v.Path().String()) diff --git a/plan/task/gitpull.go b/plan/task/gitpull.go index cb8532bd..a3dc5738 100644 --- a/plan/task/gitpull.go +++ b/plan/task/gitpull.go @@ -19,7 +19,7 @@ func init() { type gitPullTask struct { } -func (c gitPullTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *gitPullTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { var gitPull struct { Remote string Ref string diff --git a/plan/task/httpfetch.go b/plan/task/httpfetch.go index d70caffe..8a8e68fd 100644 --- a/plan/task/httpfetch.go +++ b/plan/task/httpfetch.go @@ -21,7 +21,7 @@ func init() { type httpFetchTask struct { } -func (c httpFetchTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *httpFetchTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { var httpFetch struct { Source string Checksum string diff --git a/plan/task/merge.go b/plan/task/merge.go index 1c5c18b1..60d62e3c 100644 --- a/plan/task/merge.go +++ b/plan/task/merge.go @@ -16,7 +16,7 @@ func init() { type mergeTask struct { } -func (t mergeTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *mergeTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { inputs, err := v.Lookup("inputs").List() if err != nil { return nil, err diff --git a/plan/task/mkdir.go b/plan/task/mkdir.go index 04e2f40c..c887ead2 100644 --- a/plan/task/mkdir.go +++ b/plan/task/mkdir.go @@ -18,7 +18,7 @@ func init() { type mkdirTask struct { } -func (t *mkdirTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *mkdirTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { path, err := v.Lookup("path").String() if err != nil { return nil, err diff --git a/plan/task/newsecret.go b/plan/task/newsecret.go index 0fbaf8ec..cd749bad 100644 --- a/plan/task/newsecret.go +++ b/plan/task/newsecret.go @@ -18,7 +18,7 @@ func init() { type newSecretTask struct { } -func (t *newSecretTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *newSecretTask) Run(_ context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { path, err := v.Lookup("path").String() if err != nil { return nil, err diff --git a/plan/task/nop.go b/plan/task/nop.go index 8a7dfc81..81f4c5f9 100644 --- a/plan/task/nop.go +++ b/plan/task/nop.go @@ -15,6 +15,6 @@ func init() { type nopTask struct { } -func (t *nopTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *nopTask) Run(_ context.Context, _ *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { return v, nil } diff --git a/plan/task/pull.go b/plan/task/pull.go index d374ff5c..88e179ba 100644 --- a/plan/task/pull.go +++ b/plan/task/pull.go @@ -19,7 +19,7 @@ func init() { type pullTask struct { } -func (c *pullTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *pullTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) rawRef, err := v.Lookup("source").String() @@ -68,8 +68,8 @@ func (c *pullTask) Run(ctx context.Context, pctx *plancontext.Context, s solver. if err != nil { return nil, err } - fs := pctx.FS.New(result) + fs := pctx.FS.New(result) return compiler.NewValue().FillFields(map[string]interface{}{ "output": fs.MarshalCUE(), "digest": digest, diff --git a/plan/task/push.go b/plan/task/push.go index 1adf5546..2ce8b64c 100644 --- a/plan/task/push.go +++ b/plan/task/push.go @@ -19,7 +19,7 @@ func init() { type pushTask struct { } -func (c *pushTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *pushTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) rawDest, err := v.Lookup("dest").String() diff --git a/plan/task/readfile.go b/plan/task/readfile.go index cb6a1f25..6d31d06d 100644 --- a/plan/task/readfile.go +++ b/plan/task/readfile.go @@ -18,7 +18,7 @@ func init() { type readFileTask struct { } -func (t *readFileTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *readFileTask) Run(_ context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { path, err := v.Lookup("path").String() if err != nil { return nil, err diff --git a/plan/task/source.go b/plan/task/source.go index 50062f84..19556b39 100644 --- a/plan/task/source.go +++ b/plan/task/source.go @@ -21,7 +21,7 @@ func init() { type sourceTask struct { } -func (c *sourceTask) PreRun(ctx context.Context, pctx *plancontext.Context, v *compiler.Value) error { +func (c *sourceTask) PreRun(_ context.Context, pctx *plancontext.Context, v *compiler.Value) error { origPath, err := v.Lookup("path").String() if err != nil { return err @@ -50,7 +50,7 @@ func (c *sourceTask) PreRun(ctx context.Context, pctx *plancontext.Context, v *c return nil } -func (c *sourceTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *sourceTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) path, err := v.Lookup("path").AbsPath() diff --git a/plan/task/task.go b/plan/task/task.go index 937a4a9b..1682144f 100644 --- a/plan/task/task.go +++ b/plan/task/task.go @@ -40,7 +40,7 @@ const ( type NewFunc func() Task type Task interface { - Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) + Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) } type PreRunner interface { diff --git a/plan/task/transformsecret.go b/plan/task/transformsecret.go index 3bc482ea..4b1993b1 100644 --- a/plan/task/transformsecret.go +++ b/plan/task/transformsecret.go @@ -20,7 +20,7 @@ func init() { type transformSecretTask struct { } -func (c *transformSecretTask) Run(ctx context.Context, pctx *plancontext.Context, _ solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (c *transformSecretTask) Run(ctx context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) lg.Debug().Msg("transforming secret") diff --git a/plan/task/trimsecret.go b/plan/task/trimsecret.go index f4441d9d..6882a98a 100644 --- a/plan/task/trimsecret.go +++ b/plan/task/trimsecret.go @@ -16,7 +16,7 @@ func init() { type trimSecretTask struct { } -func (t *trimSecretTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *trimSecretTask) Run(_ context.Context, pctx *plancontext.Context, _ *solver.Solver, v *compiler.Value) (*compiler.Value, error) { input, err := pctx.Secrets.FromValue(v.Lookup("input")) if err != nil { return nil, err diff --git a/plan/task/writefile.go b/plan/task/writefile.go index 90af30c7..6bfa7843 100644 --- a/plan/task/writefile.go +++ b/plan/task/writefile.go @@ -19,7 +19,7 @@ func init() { type writeFileTask struct { } -func (t *writeFileTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *writeFileTask) Run(ctx context.Context, pctx *plancontext.Context, s *solver.Solver, v *compiler.Value) (*compiler.Value, error) { var contents []byte var err error @@ -49,19 +49,16 @@ func (t *writeFileTask) Run(ctx context.Context, pctx *plancontext.Context, s so } permissions, err := v.Lookup("permissions").Int64() - if err != nil { return nil, err } input, err := pctx.FS.FromValue(v.Lookup("input")) - if err != nil { return nil, err } inputState, err := input.State() - if err != nil { return nil, err } @@ -72,7 +69,6 @@ func (t *writeFileTask) Run(ctx context.Context, pctx *plancontext.Context, s so ) result, err := s.Solve(ctx, outputState, pctx.Platform.Get()) - if err != nil { return nil, err } @@ -80,7 +76,6 @@ func (t *writeFileTask) Run(ctx context.Context, pctx *plancontext.Context, s so outputFS := pctx.FS.New(result) output := compiler.NewValue() - if err := output.FillPath(cue.ParsePath("output"), outputFS.MarshalCUE()); err != nil { return nil, err } diff --git a/solver/solver.go b/solver/solver.go index 0bd2d384..56ee900c 100644 --- a/solver/solver.go +++ b/solver/solver.go @@ -25,19 +25,22 @@ type Solver struct { opts Opts eventsWg *sync.WaitGroup closeCh chan *bk.SolveStatus + refs []bkgw.Reference + l sync.RWMutex } type Opts struct { - Control *bk.Client - Gateway bkgw.Client - Events chan *bk.SolveStatus - Context *plancontext.Context - Auth *RegistryAuthProvider - NoCache bool + Control *bk.Client + Gateway bkgw.Client + Events chan *bk.SolveStatus + Context *plancontext.Context + Auth *RegistryAuthProvider + NoCache bool + CacheImports []bkgw.CacheOptionsEntry } -func New(opts Opts) Solver { - return Solver{ +func New(opts Opts) *Solver { + return &Solver{ eventsWg: &sync.WaitGroup{}, closeCh: make(chan *bk.SolveStatus), opts: opts, @@ -63,25 +66,25 @@ func invalidateCache(def *llb.Definition) error { return nil } -func (s Solver) GetOptions() Opts { +func (s *Solver) GetOptions() Opts { return s.opts } -func (s Solver) NoCache() bool { +func (s *Solver) NoCache() bool { return s.opts.NoCache } -func (s Solver) Stop() { +func (s *Solver) Stop() { close(s.closeCh) s.eventsWg.Wait() close(s.opts.Events) } -func (s Solver) AddCredentials(target, username, secret string) { +func (s *Solver) AddCredentials(target, username, secret string) { s.opts.Auth.AddCredentials(target, username, secret) } -func (s Solver) Marshal(ctx context.Context, st llb.State, co ...llb.ConstraintsOpt) (*bkpb.Definition, error) { +func (s *Solver) Marshal(ctx context.Context, st llb.State, co ...llb.ConstraintsOpt) (*bkpb.Definition, error) { // FIXME: do not hardcode the platform def, err := st.Marshal(ctx, co...) if err != nil { @@ -97,11 +100,11 @@ func (s Solver) Marshal(ctx context.Context, st llb.State, co ...llb.Constraints return def.ToPB(), nil } -func (s Solver) SessionID() string { +func (s *Solver) SessionID() string { return s.opts.Gateway.BuildOpts().SessionID } -func (s Solver) ResolveImageConfig(ctx context.Context, ref string, opts llb.ResolveImageConfigOpt) (dockerfile2llb.Image, digest.Digest, error) { +func (s *Solver) ResolveImageConfig(ctx context.Context, ref string, opts llb.ResolveImageConfigOpt) (dockerfile2llb.Image, digest.Digest, error) { var image dockerfile2llb.Image // Load image metadata and convert to to LLB. @@ -119,7 +122,7 @@ func (s Solver) ResolveImageConfig(ctx context.Context, ref string, opts llb.Res } // Solve will block until the state is solved and returns a Reference. -func (s Solver) SolveRequest(ctx context.Context, req bkgw.SolveRequest) (*bkgw.Result, error) { +func (s *Solver) SolveRequest(ctx context.Context, req bkgw.SolveRequest) (*bkgw.Result, error) { // makes Solve() to block until LLB graph is solved. otherwise it will // return result (that you can for example use for next build) that // will be evaluated on export or if you access files on it. @@ -131,9 +134,15 @@ func (s Solver) SolveRequest(ctx context.Context, req bkgw.SolveRequest) (*bkgw. return res, nil } +func (s *Solver) References() []bkgw.Reference { + s.l.RLock() + defer s.l.RUnlock() + return s.refs +} + // Solve will block until the state is solved and returns a Reference. // It takes a platform as argument which correspond to the targeted platform. -func (s Solver) Solve(ctx context.Context, st llb.State, platform specs.Platform) (bkgw.Reference, error) { +func (s *Solver) Solve(ctx context.Context, st llb.State, platform specs.Platform) (bkgw.Reference, error) { def, err := s.Marshal(ctx, st, llb.Platform(platform)) if err != nil { return nil, err @@ -152,19 +161,29 @@ func (s Solver) Solve(ctx context.Context, st llb.State, platform specs.Platform // call solve res, err := s.SolveRequest(ctx, bkgw.SolveRequest{ - Definition: def, + Definition: def, + CacheImports: s.opts.CacheImports, }) if err != nil { return nil, err } - return res.SingleRef() + ref, err := res.SingleRef() + if err != nil { + return nil, err + } + + s.l.Lock() + defer s.l.Unlock() + s.refs = append(s.refs, ref) + + return ref, nil } // Forward events from solver to the main events channel // It creates a task in the solver waiting group to be // sure that everything will be forward to the main channel -func (s Solver) forwardEvents(ch chan *bk.SolveStatus) { +func (s *Solver) forwardEvents(ch chan *bk.SolveStatus) { s.eventsWg.Add(1) defer s.eventsWg.Done() @@ -177,7 +196,7 @@ func (s Solver) forwardEvents(ch chan *bk.SolveStatus) { // FIXME: this is currently implemented as a hack, starting a new Build session // within buildkit from the Control API. Ideally the Gateway API should allow to // Export directly. -func (s Solver) Export(ctx context.Context, st llb.State, img *dockerfile2llb.Image, output bk.ExportEntry, platform specs.Platform) (*bk.SolveResponse, error) { +func (s *Solver) Export(ctx context.Context, st llb.State, img *dockerfile2llb.Image, output bk.ExportEntry, platform specs.Platform) (*bk.SolveResponse, error) { // Check close event channel and return if we're already done with the main pipeline select { case <-s.closeCh: diff --git a/tests/helpers.bash b/tests/helpers.bash index b5bcba91..3a90421d 100644 --- a/tests/helpers.bash +++ b/tests/helpers.bash @@ -13,6 +13,13 @@ common_setup() { DAGGER_TELEMETRY_DISABLE="1" export DAGGER_TELEMETRY_DISABLE + export DAGGER_LOG_LEVEL="debug" + if [ -n "$GITHUB_ACTIONS" ]; + then + export DAGGER_CACHE_TO="type=gha,mode=max,scope=integration-tests-$BATS_TEST_NAME" + export DAGGER_CACHE_FROM="type=gha,scope=integration-tests-$BATS_TEST_NAME" + fi + SOPS_AGE_KEY_FILE=~/.config/dagger/keys.txt export SOPS_AGE_KEY_FILE } diff --git a/tests/package.json b/tests/package.json index 94e0d7b4..b959fad7 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "license": "Apache-2.0", "scripts": { - "test": "bats --jobs 4 --show-output-of-passing-tests --print-output-on-failure ." + "test": "bats --jobs 4 --print-output-on-failure --verbose-run ." }, "devDependencies": { "bats": "https://github.com/bats-core/bats-core#master", diff --git a/tests/plan.bats b/tests/plan.bats index 8af74b72..69692a71 100644 --- a/tests/plan.bats +++ b/tests/plan.bats @@ -84,6 +84,24 @@ setup() { assert_output --partial 'path "/foobar" does not exist' } + +@test "plan/client/filesystem/read/fs/invalid_fs_input" { + cd "$TESTDIR/plan/client/filesystem/read/fs/invalid_fs_input" + + run "$DAGGER" "do" -p . test + assert_failure + assert_output --partial 'test.txt" is not a directory' +} + + +@test "plan/client/filesystem/read/fs/invalid_fs_type" { + cd "$TESTDIR/plan/client/filesystem/read/fs/invalid_fs_type" + + run "$DAGGER" "do" -p . test + assert_failure + assert_output --partial 'rootfs" cannot be a directory' +} + @test "plan/client/filesystem/read/fs/relative" { cd "$TESTDIR/plan/client/filesystem/read/fs/relative" @@ -144,7 +162,7 @@ setup() { cd "$TESTDIR/plan/client/filesystem/conflict" echo -n foo > test.txt - run "$DAGGER" "do" --log-level debug -p . test + run "$DAGGER" "do" -p . test assert_line --regexp "client\.filesystem\..+\.write.+dependency=client\.filesystem\..+\.read" rm -f test.txt diff --git a/tests/plan/client/filesystem/read/fs/invalid_fs_input/test.cue b/tests/plan/client/filesystem/read/fs/invalid_fs_input/test.cue new file mode 100644 index 00000000..e35685e8 --- /dev/null +++ b/tests/plan/client/filesystem/read/fs/invalid_fs_input/test.cue @@ -0,0 +1,12 @@ +package main + +import ( + "dagger.io/dagger" +) + +dagger.#Plan & { + // Reading a file into a dagger.#FS should not be possbile + client: filesystem: "../rootfs/test.txt": read: contents: dagger.#FS + actions: test: { + } +} diff --git a/tests/plan/client/filesystem/read/fs/invalid_fs_type/test.cue b/tests/plan/client/filesystem/read/fs/invalid_fs_type/test.cue new file mode 100644 index 00000000..0730ed64 --- /dev/null +++ b/tests/plan/client/filesystem/read/fs/invalid_fs_type/test.cue @@ -0,0 +1,21 @@ +package main + +import ( + "dagger.io/dagger" + "dagger.io/dagger/core" +) + +dagger.#Plan & { + // Reading a directory into a non-fs should fail + client: filesystem: "../rootfs": read: contents: string + actions: { + image: core.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + test: core.#Exec & { + input: image.output + args: ["test", client.filesystem."../rootfs".read.contents] + } + + } +} diff --git a/tests/project.bats b/tests/project.bats index 111c073e..65574fe3 100644 --- a/tests/project.bats +++ b/tests/project.bats @@ -25,6 +25,6 @@ setup() { test -f ./cue.mod/pkg/.gitattributes run cat ./cue.mod/pkg/.gitattributes assert_output --partial "generated by dagger" - + test ! -f ./cue.mod/pkg/.gitignore } diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 22640665..010a9c68 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -47,12 +47,6 @@ module.exports = { className: "header-github-link hide-target-icon", "aria-label": "GitHub repository", }, - { - position: "right", - label: "Schedule a demo", - href: "https://savvycal.com/dagger/meet", - className: "button", - }, ], hideOnScroll: true, }, diff --git a/website/package.json b/website/package.json index b11bf4be..bd60f09b 100644 --- a/website/package.json +++ b/website/package.json @@ -17,10 +17,10 @@ }, "dependencies": { "@docusaurus/core": "^2.0.0-beta.18", - "@docusaurus/preset-classic": "^2.0.0-beta.17", + "@docusaurus/preset-classic": "^2.0.0-beta.18", "@mdx-js/react": "^1.6.22", "@svgr/webpack": "^6.2.1", - "amplitude-js": "^8.17.0", + "amplitude-js": "^8.18.0", "clsx": "^1.1.1", "docusaurus-plugin-sass": "^0.2.2", "docusaurus2-dotenv": "^1.4.0", @@ -31,7 +31,7 @@ "react-dom": "^17.0.1", "react-social-login-buttons": "^3.6.0", "remark-code-import": "^0.4.0", - "sass": "^1.49.9", + "sass": "^1.49.10", "url-loader": "^4.1.1" }, "browserslist": { diff --git a/website/sidebars.js b/website/sidebars.js index 24011247..03dcee90 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -79,14 +79,11 @@ module.exports = { type: "category", label: "Getting Started", collapsible: false, - collapsed: false, link: { - type: 'generated-index', - title: 'Getting Started', - description: - "Run your CI/CD pipelines locally, then easily integrate them with any CI environment.", + type: 'doc', + id: 'getting-started/index' }, - items: ["getting-started/local-dev", "getting-started/ci-environment"], + items: ["getting-started/local-dev", "getting-started/ci-environment", "getting-started/vs"], }, { type: "category", diff --git a/website/src/css/custom.scss b/website/src/css/custom.scss index 97476723..0d1dbf27 100644 --- a/website/src/css/custom.scss +++ b/website/src/css/custom.scss @@ -101,7 +101,9 @@ h2 { line-height: 32px; } -code { +code, +.table-of-contents__link code, +.table-of-contents__link:hover code { margin: 0 1px; color: var(--ifm-code-color); .alert & { @@ -124,7 +126,7 @@ code { --ifm-h3-vertical-rhythm-top: 2; } - a { + a:not(.card) { font-weight: bold; text-decoration: underline; color: var(--ifm-color-primary-dark); @@ -279,9 +281,9 @@ h1[class^="h1Heading"] { line-height: 36px; @include desktop { width: 48px; - span { - display: none; - } + text-indent: 9999px; + white-space: nowrap; + overflow: hidden; } } @@ -310,15 +312,6 @@ h1[class^="h1Heading"] { } /* sidebar */ -@include desktop { - aside[class^="docSidebarContainer"] { - width: 340px; - - div[class^="sidebar"] { - width: 340px; - } - } -} a[class^="sidebarLogo"] { img { @@ -341,7 +334,7 @@ a[class^="sidebarLogo"] { main[class^="docMainContainer"] { background: #ffffff; - padding: 2rem 2rem 2rem 5rem; + padding: 2rem; @include tablet { padding: 2rem; diff --git a/website/static/img/favicon.png b/website/static/img/favicon.png index e86f09f4..a890acb4 100644 Binary files a/website/static/img/favicon.png and b/website/static/img/favicon.png differ diff --git a/website/yarn.lock b/website/yarn.lock index 06139b44..29ba5c67 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -28,22 +28,22 @@ dependencies: "@algolia/cache-common" "4.11.0" -"@algolia/cache-browser-local-storage@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.2.tgz#62935ddb81b50d539111b2146fa340495ec1cd53" - integrity sha512-z8LjFsQc0B6h6LEE3pkUGM4ErVktn6bkFbhnYbTccjmFVQ+wXFJd/D63e0WtaC+hwRB1xq8uKhkz9oojEKEsGA== +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== dependencies: - "@algolia/cache-common" "4.12.2" + "@algolia/cache-common" "4.13.0" "@algolia/cache-common@4.11.0": version "4.11.0" resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.11.0.tgz#066fe6d58b18e4b028dbef9bb8de07c5e22a3594" integrity sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw== -"@algolia/cache-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.12.2.tgz#8512f311524f4d0aae8611e9879214a5e2a577ae" - integrity sha512-r//r7MF0Na0HxD2BHnjWsDKuI72Z5UEf/Rb/8MC08XKBsjCwBihGxWxycjRcNGjNEIxJBsvRMIEOipcd9qD54g== +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== "@algolia/cache-in-memory@4.11.0": version "4.11.0" @@ -52,12 +52,12 @@ dependencies: "@algolia/cache-common" "4.11.0" -"@algolia/cache-in-memory@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.12.2.tgz#cacd13c02a7826bfad1c391d012ce00bc5db3859" - integrity sha512-opWpbBUloP1fcTG3wBDnAfcoyNXW5GFDgGtLXrSANdfnelPKkr3O8j01ZTkRlPIuBDR0izGZG8MVWMDlTf71Bw== +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== dependencies: - "@algolia/cache-common" "4.12.2" + "@algolia/cache-common" "4.13.0" "@algolia/client-account@4.11.0": version "4.11.0" @@ -68,14 +68,14 @@ "@algolia/client-search" "4.11.0" "@algolia/transporter" "4.11.0" -"@algolia/client-account@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.12.2.tgz#adc4833b78576d1558ba45b7d44be22747debdc9" - integrity sha512-HZqEyeVVjzOlfoSUyc+7+ueEJmRgqSuC+hqQOGECYa5JVno4d8eRVuDAMOb87I2LOdg/WoFMcAtaaRq2gpfV/w== +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/transporter" "4.12.2" + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/client-analytics@4.11.0": version "4.11.0" @@ -87,15 +87,15 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" -"@algolia/client-analytics@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.12.2.tgz#741115db1af7db9526acdd702890480480dc09ce" - integrity sha512-7ktimzesu+vk3l+eG9w/nQh6/9AoIieCKmoiRIguKh6okGsaSBrcTHvUwIQEIiliqPuAFBk2M8eXYFqOZzwCZw== +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/client-common@4.11.0": version "4.11.0" @@ -105,13 +105,13 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" -"@algolia/client-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.12.2.tgz#88ffd3ddececdc5f343a4a9cb1f6c4058fe780c1" - integrity sha512-+dTicT1lklwOpeoiDspUoRSQYHhrr2IzllrX89/WuTPEBm2eww1xurqrSTQYC0MuVeX1s9/i4k34Q0ZnspypWg== +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== dependencies: - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/client-personalization@4.11.0": version "4.11.0" @@ -122,14 +122,14 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" -"@algolia/client-personalization@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.12.2.tgz#5aa1d2a4bbc64559a98bb6d029dda59dbc86e490" - integrity sha512-JBW3vYFGIm5sAAy3cLUdmUCpmSAdreo5S1fERg7xgF6KyxGrwyy5BViTNWrOKG+av2yusk1wKydOYJ1Fbpbaxw== +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/client-search@4.11.0": version "4.11.0" @@ -140,14 +140,14 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" -"@algolia/client-search@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.12.2.tgz#940dd07ae4fa7aa86e382ecaf0a82445010b1b4c" - integrity sha512-JIqi14TgfEqAooNbSPBC1ZCk3Pnviqlaz9KofAqWBxSRTpPUFnU/XQCU5ihR0PC68SFVDnU/Y9cak/XotXPUeg== +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== dependencies: - "@algolia/client-common" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/transporter" "4.12.2" + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" "@algolia/events@^4.0.1": version "4.0.1" @@ -159,10 +159,10 @@ resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.11.0.tgz#bac1c2d59d29dee378b57412c8edd435b97de663" integrity sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg== -"@algolia/logger-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.12.2.tgz#cdc9a685d7cf356a4d9e5915f741f1ee1a6baade" - integrity sha512-iOiJAymLjq137G7+8EQuUEkrgta0cZGMg6scp8s4hJ+X6k+6By4nyptdkCWYwKLsW/Xy927QcIhGlkWV78vQIQ== +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== "@algolia/logger-console@4.11.0": version "4.11.0" @@ -171,12 +171,12 @@ dependencies: "@algolia/logger-common" "4.11.0" -"@algolia/logger-console@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.12.2.tgz#d7348e41378fbab5413cb5f97d8ae2ff378cfdb8" - integrity sha512-veuQZyTSqHoHJtr9mLMnYeal9Mee6hCie4eqY+645VbeOrgT9p/kCMbKg5GLJGoLPlXGu7C0XpHyUj5k7/NQyw== +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== dependencies: - "@algolia/logger-common" "4.12.2" + "@algolia/logger-common" "4.13.0" "@algolia/requester-browser-xhr@4.11.0": version "4.11.0" @@ -185,22 +185,22 @@ dependencies: "@algolia/requester-common" "4.11.0" -"@algolia/requester-browser-xhr@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.2.tgz#abfcb1901602ccdf51879b10d914208b776aa418" - integrity sha512-FpFdHNd81tS3zj6Glqd+lt+RV0ljPExKtx+QB+gani6HWZ9YlSCM+Zl82T4ibxN+hmkrMeAyT+TMzS0jiGhGyQ== +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" "@algolia/requester-common@4.11.0": version "4.11.0" resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.11.0.tgz#d16de98d3ff72434bac39e4d915eab08035946a9" integrity sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA== -"@algolia/requester-common@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.12.2.tgz#6d6181fb961205695bf535e108d2e5be8f8c9047" - integrity sha512-4szj/lvDQf/u8EyyRBBRZD1ZkKDyLBbckLj7meQDlnbfwnW1UpLwpB2l3XJ9wDmDSftGxUCeTl5oMFe4z9OEvQ== +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== "@algolia/requester-node-http@4.11.0": version "4.11.0" @@ -209,12 +209,12 @@ dependencies: "@algolia/requester-common" "4.11.0" -"@algolia/requester-node-http@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.12.2.tgz#f91e749ee6854c944cc741f13c539dff23363f67" - integrity sha512-UXfJNZt2KMwjBjiOa3cJ/PyoXWZa/F1vy6rdyG4xQeZDcLbqKP3O2b+bOJcGPmFbmdwBhtAyMVLt+hvAvAVfOw== +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== dependencies: - "@algolia/requester-common" "4.12.2" + "@algolia/requester-common" "4.13.0" "@algolia/transporter@4.11.0": version "4.11.0" @@ -225,14 +225,14 @@ "@algolia/logger-common" "4.11.0" "@algolia/requester-common" "4.11.0" -"@algolia/transporter@4.12.2": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.12.2.tgz#60189b626b170f3386deb1d7a0a1e70ed8156864" - integrity sha512-PUq79if4CukXsm27ymTQ3eD3juSvMcyJmt6mxCkSFE0zQRL4ert61HBlNH6S9y/quUVe3g7oggfHq3d5pdpqZA== +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== dependencies: - "@algolia/cache-common" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/requester-common" "4.12.2" + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" "@amplitude/analytics-connector@1.0.0": version "1.0.0" @@ -317,7 +317,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.15.5", "@babel/core@^7.17.5", "@babel/core@^7.17.8": +"@babel/core@^7.15.5", "@babel/core@^7.17.8": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== @@ -1467,7 +1467,7 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/runtime-corejs3@^7.17.2", "@babel/runtime-corejs3@^7.17.8": +"@babel/runtime-corejs3@^7.17.8": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== @@ -1475,7 +1475,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== @@ -1587,86 +1587,7 @@ "@docsearch/css" "3.0.0" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.17.tgz#f631aae04405de42a428a31928998242cd1d7b77" - integrity sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw== - dependencies: - "@babel/core" "^7.17.5" - "@babel/generator" "^7.17.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.17.0" - "@babel/preset-env" "^7.16.11" - "@babel/preset-react" "^7.16.7" - "@babel/preset-typescript" "^7.16.7" - "@babel/runtime" "^7.17.2" - "@babel/runtime-corejs3" "^7.17.2" - "@babel/traverse" "^7.17.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - "@slorber/static-site-generator-webpack-plugin" "^4.0.1" - "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.2" - babel-loader "^8.2.3" - babel-plugin-dynamic-import-node "2.3.0" - boxen "^6.2.1" - chokidar "^3.5.3" - clean-css "^5.2.4" - cli-table3 "^0.6.1" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^10.2.4" - core-js "^3.21.1" - css-loader "^6.6.0" - css-minimizer-webpack-plugin "^3.4.1" - cssnano "^5.0.17" - del "^6.0.0" - detect-port "^1.3.0" - escape-html "^1.0.3" - eta "^1.12.3" - file-loader "^6.2.0" - fs-extra "^10.0.1" - html-minifier-terser "^6.1.0" - html-tags "^3.1.0" - html-webpack-plugin "^5.5.0" - import-fresh "^3.3.0" - is-root "^2.1.0" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.5.3" - nprogress "^0.2.0" - postcss "^8.4.7" - postcss-loader "^6.2.1" - prompts "^2.4.2" - react-dev-utils "^12.0.0" - react-helmet-async "^1.2.3" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.2.0" - react-router-config "^5.1.1" - react-router-dom "^5.2.0" - remark-admonitions "^1.2.1" - rtl-detect "^1.0.4" - semver "^7.3.4" - serve-handler "^6.1.3" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.1" - tslib "^2.3.1" - update-notifier "^5.1.0" - url-loader "^4.1.1" - wait-on "^6.0.1" - webpack "^5.69.1" - webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.7.4" - webpack-merge "^5.8.0" - webpackbar "^5.0.2" - -"@docusaurus/core@^2.0.0-beta.18": +"@docusaurus/core@2.0.0-beta.18", "@docusaurus/core@^2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.18.tgz#44c6eefe29257462df630640a35f0c86bd80639a" integrity sha512-puV7l+0/BPSi07Xmr8tVktfs1BzhC8P5pm6Bs2CfvysCJ4nefNCD1CosPc1PGBWy901KqeeEJ1aoGwj9tU3AUA== @@ -1745,15 +1666,6 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz#f687bc6e5c8cb2139a7830dec757cfcb92dbb681" - integrity sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A== - dependencies: - cssnano-preset-advanced "^5.1.12" - postcss "^8.4.7" - postcss-sort-media-queries "^4.2.1" - "@docusaurus/cssnano-preset@2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.18.tgz#235ac9064fe8f8da618349ce5305be3ed3a44e29" @@ -1763,14 +1675,6 @@ postcss "^8.4.12" postcss-sort-media-queries "^4.2.1" -"@docusaurus/logger@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz#89c5ace3b4efd5274adb0d8919328892c4466d02" - integrity sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w== - dependencies: - chalk "^4.1.2" - tslib "^2.3.1" - "@docusaurus/logger@2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.18.tgz#12302f312a083eb018caa28505b63f5dd4ab6a91" @@ -1779,28 +1683,6 @@ chalk "^4.1.2" tslib "^2.3.1" -"@docusaurus/mdx-loader@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz#838f87f4cbf12701c4d8eb11e4f9698fb7155bf8" - integrity sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A== - dependencies: - "@babel/parser" "^7.17.3" - "@babel/traverse" "^7.17.3" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@mdx-js/mdx" "^1.6.22" - escape-html "^1.0.3" - file-loader "^6.2.0" - fs-extra "^10.0.1" - image-size "^1.0.1" - mdast-util-to-string "^2.0.0" - remark-emoji "^2.1.0" - stringify-object "^3.3.0" - tslib "^2.3.1" - unist-util-visit "^2.0.2" - url-loader "^4.1.1" - webpack "^5.69.1" - "@docusaurus/mdx-loader@2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.18.tgz#4a9fc0607e0a210a7d7db3108415208dd36e33d3" @@ -1823,28 +1705,28 @@ url-loader "^4.1.1" webpack "^5.70.0" -"@docusaurus/module-type-aliases@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz#73f6d34be202ac093e78769ff72613d353087cd7" - integrity sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg== +"@docusaurus/module-type-aliases@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.18.tgz#001379229c58cbc3ed565e19437cbda86d5e8742" + integrity sha512-e6mples8FZRyT7QyqidGS6BgkROjM+gljJsdOqoctbtBp+SZ5YDjwRHOmoY7eqEfsQNOaFZvT2hK38ui87hCRA== dependencies: - "@docusaurus/types" "2.0.0-beta.17" + "@docusaurus/types" "2.0.0-beta.18" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" react-helmet-async "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz#1d1063bfda78a80d517694567b965d5c3a70479f" - integrity sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg== +"@docusaurus/plugin-content-blog@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.18.tgz#95fe3dfc8bae9bf153c65a3a441234c450cbac0a" + integrity sha512-qzK83DgB+mxklk3PQC2nuTGPQD/8ogw1nXSmaQpyXAyhzcz4CXAZ9Swl/Ee9A/bvPwQGnSHSP3xqIYl8OkFtfw== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/logger" "2.0.0-beta.18" + "@docusaurus/mdx-loader" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" + "@docusaurus/utils-common" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" cheerio "^1.0.0-rc.10" feed "^4.2.2" fs-extra "^10.0.1" @@ -1853,18 +1735,18 @@ remark-admonitions "^1.2.1" tslib "^2.3.1" utility-types "^3.10.0" - webpack "^5.69.1" + webpack "^5.70.0" -"@docusaurus/plugin-content-docs@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz#97f13bb458e165224db6867836e8e9637ea15921" - integrity sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg== +"@docusaurus/plugin-content-docs@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.18.tgz#fef52d945da2928e0f4f3f9a9384d9ee7f2d4288" + integrity sha512-z4LFGBJuzn4XQiUA7OEA2SZTqlp+IYVjd3NrCk/ZUfNi1tsTJS36ATkk9Y6d0Nsp7K2kRXqaXPsz4adDgeIU+Q== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/logger" "2.0.0-beta.18" + "@docusaurus/mdx-loader" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" combine-promises "^1.1.0" fs-extra "^10.0.1" import-fresh "^3.3.0" @@ -1873,80 +1755,80 @@ remark-admonitions "^1.2.1" tslib "^2.3.1" utility-types "^3.10.0" - webpack "^5.69.1" + webpack "^5.70.0" -"@docusaurus/plugin-content-pages@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz#d5955d3cc23722518a6032f830cf8c7b7aeb3d5a" - integrity sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA== +"@docusaurus/plugin-content-pages@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.18.tgz#0fef392be3fea3d85c212caf4eb744ead920c30b" + integrity sha512-CJ2Xeb9hQrMeF4DGywSDVX2TFKsQpc8ZA7czyeBAAbSFsoRyxXPYeSh8aWljqR4F1u/EKGSKy0Shk/D4wumaHw== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/mdx-loader" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/mdx-loader" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" fs-extra "^10.0.1" remark-admonitions "^1.2.1" tslib "^2.3.1" - webpack "^5.69.1" + webpack "^5.70.0" -"@docusaurus/plugin-debug@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz#0185dfd5575aa940443d2cb9fab4bed3308ed3a1" - integrity sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw== +"@docusaurus/plugin-debug@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.18.tgz#d4582532e59b538a23398f7c444b005367efa922" + integrity sha512-inLnLERgG7q0WlVmK6nYGHwVqREz13ivkynmNygEibJZToFRdgnIPW+OwD8QzgC5MpQTJw7+uYjcitpBumy1Gw== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" fs-extra "^10.0.1" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz#31ca1ef88f0f7874c6e12c642d64abe694494720" - integrity sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A== +"@docusaurus/plugin-google-analytics@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.18.tgz#a9b1659abb3f588e866aaa742ec4c82fe943eda3" + integrity sha512-s9dRBWDrZ1uu3wFXPCF7yVLo/+5LUFAeoxpXxzory8gn9GYDt8ZDj80h5DUyCLxiy72OG6bXWNOYS/Vc6cOPXQ== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" tslib "^2.3.1" -"@docusaurus/plugin-google-gtag@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz#e6baf8f03cea756ed2259a5356fa689388bc303d" - integrity sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw== +"@docusaurus/plugin-google-gtag@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.18.tgz#b51611ac01915523ddcfc9732f7862cf4996a0e1" + integrity sha512-h7vPuLVo/9pHmbFcvb4tCpjg4SxxX4k+nfVDyippR254FM++Z/nA5pRB0WvvIJ3ZTe0ioOb5Wlx2xdzJIBHUNg== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" tslib "^2.3.1" -"@docusaurus/plugin-sitemap@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz#e1aa67ff09d9145e8e5522c4541bbcdd6365560c" - integrity sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ== +"@docusaurus/plugin-sitemap@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.18.tgz#7e8217e95bede5719bd02265dcf7eb2fea76b675" + integrity sha512-Klonht0Ye3FivdBpS80hkVYNOH+8lL/1rbCPEV92rKhwYdwnIejqhdKct4tUTCl8TYwWiyeUFQqobC/5FNVZPQ== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" + "@docusaurus/utils-common" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" fs-extra "^10.0.1" sitemap "^7.1.1" tslib "^2.3.1" -"@docusaurus/preset-classic@^2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz#a8fc3447aa6fe0e5f259d894cc8dd64c049c7605" - integrity sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw== +"@docusaurus/preset-classic@^2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.18.tgz#82f6905d34a13e46289ac4d2f1125e47033bd9d8" + integrity sha512-TfDulvFt/vLWr/Yy7O0yXgwHtJhdkZ739bTlFNwEkRMAy8ggi650e52I1I0T79s67llecb4JihgHPW+mwiVkCQ== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/plugin-debug" "2.0.0-beta.17" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.17" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.17" - "@docusaurus/plugin-sitemap" "2.0.0-beta.17" - "@docusaurus/theme-classic" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-search-algolia" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/plugin-content-blog" "2.0.0-beta.18" + "@docusaurus/plugin-content-docs" "2.0.0-beta.18" + "@docusaurus/plugin-content-pages" "2.0.0-beta.18" + "@docusaurus/plugin-debug" "2.0.0-beta.18" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.18" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.18" + "@docusaurus/plugin-sitemap" "2.0.0-beta.18" + "@docusaurus/theme-classic" "2.0.0-beta.18" + "@docusaurus/theme-common" "2.0.0-beta.18" + "@docusaurus/theme-search-algolia" "2.0.0-beta.18" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1956,60 +1838,61 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz#1f7a1dd714993819f266ce422d06dd4533d4ab3a" - integrity sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg== +"@docusaurus/theme-classic@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.18.tgz#a3632e83923ed4372f80999128375cd0b378d3f8" + integrity sha512-WJWofvSGKC4Luidk0lyUwkLnO3DDynBBHwmt4QrV+aAVWWSOHUjA2mPOF6GLGuzkZd3KfL9EvAfsU0aGE1Hh5g== dependencies: - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-common" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/plugin-content-blog" "2.0.0-beta.18" + "@docusaurus/plugin-content-docs" "2.0.0-beta.18" + "@docusaurus/plugin-content-pages" "2.0.0-beta.18" + "@docusaurus/theme-common" "2.0.0-beta.18" + "@docusaurus/theme-translations" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" + "@docusaurus/utils-common" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" "@mdx-js/react" "^1.6.22" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" - infima "0.2.0-alpha.37" + infima "0.2.0-alpha.38" lodash "^4.17.21" - postcss "^8.4.7" - prism-react-renderer "^1.2.1" + postcss "^8.4.12" + prism-react-renderer "^1.3.1" prismjs "^1.27.0" react-router-dom "^5.2.0" - rtlcss "^3.3.0" + rtlcss "^3.5.0" -"@docusaurus/theme-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz#3b71bb8b0973a0cee969a1bb76794c81d597f290" - integrity sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g== +"@docusaurus/theme-common@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.18.tgz#abf74f82c37d2ce813f92447cb020831290059fb" + integrity sha512-3pI2Q6ttScDVTDbuUKAx+TdC8wmwZ2hfWk8cyXxksvC9bBHcyzXhSgcK8LTsszn2aANyZ3e3QY2eNSOikTFyng== dependencies: - "@docusaurus/module-type-aliases" "2.0.0-beta.17" - "@docusaurus/plugin-content-blog" "2.0.0-beta.17" - "@docusaurus/plugin-content-docs" "2.0.0-beta.17" - "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/module-type-aliases" "2.0.0-beta.18" + "@docusaurus/plugin-content-blog" "2.0.0-beta.18" + "@docusaurus/plugin-content-docs" "2.0.0-beta.18" + "@docusaurus/plugin-content-pages" "2.0.0-beta.18" clsx "^1.1.1" parse-numeric-range "^1.3.0" prism-react-renderer "^1.3.1" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz#880fb965b71e5aa7f01d456a1a2aa8eb6c244082" - integrity sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w== +"@docusaurus/theme-search-algolia@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.18.tgz#cbdda8982deac4556848e04853b7f32d93886c02" + integrity sha512-2w97KO/gnjI49WVtYQqENpQ8iO1Sem0yaTxw7/qv/ndlmIAQD0syU4yx6GsA7bTQCOGwKOWWzZSetCgUmTnWgA== dependencies: "@docsearch/react" "^3.0.0" - "@docusaurus/core" "2.0.0-beta.17" - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/theme-common" "2.0.0-beta.17" - "@docusaurus/theme-translations" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - "@docusaurus/utils-validation" "2.0.0-beta.17" - algoliasearch "^4.12.1" - algoliasearch-helper "^3.7.0" + "@docusaurus/core" "2.0.0-beta.18" + "@docusaurus/logger" "2.0.0-beta.18" + "@docusaurus/plugin-content-docs" "2.0.0-beta.18" + "@docusaurus/theme-common" "2.0.0-beta.18" + "@docusaurus/theme-translations" "2.0.0-beta.18" + "@docusaurus/utils" "2.0.0-beta.18" + "@docusaurus/utils-validation" "2.0.0-beta.18" + algoliasearch "^4.13.0" + algoliasearch-helper "^3.7.4" clsx "^1.1.1" eta "^1.12.3" fs-extra "^10.0.1" @@ -2017,33 +1900,25 @@ tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz#a4b84fa63befc11847da471922387aa3eb4e5626" - integrity sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A== +"@docusaurus/theme-translations@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.18.tgz#292699ce89b013262683faf7f4ee7b75a8745a79" + integrity sha512-1uTEUXlKC9nco1Lx9H5eOwzB+LP4yXJG5wfv1PMLE++kJEdZ40IVorlUi3nJnaa9/lJNq5vFvvUDrmeNWsxy/Q== dependencies: fs-extra "^10.0.1" tslib "^2.3.1" -"@docusaurus/types@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.17.tgz#582e3d961ce4409ed17454669b3f6a7a9f696cdd" - integrity sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ== +"@docusaurus/types@2.0.0-beta.18": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.18.tgz#9446928a6b751eefde390420b39eac32ba26abb2" + integrity sha512-zkuSmPQYP3+z4IjGHlW0nGzSSpY7Sit0Nciu/66zSb5m07TK72t6T1MlpCAn/XijcB9Cq6nenC3kJh66nGsKYg== dependencies: commander "^5.1.0" joi "^17.6.0" - querystring "0.2.1" utility-types "^3.10.0" - webpack "^5.69.1" + webpack "^5.70.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz#cefd950a7722f5f702690b4de27ea19fd65f3364" - integrity sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w== - dependencies: - tslib "^2.3.1" - "@docusaurus/utils-common@2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.18.tgz#46cf0bed2a7c532b2b85eab5bb914ff118b2c4e9" @@ -2051,16 +1926,6 @@ dependencies: tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz#d7dbfc1a29768c37c0d8a6af85eb1bdfef7656df" - integrity sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA== - dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@docusaurus/utils" "2.0.0-beta.17" - joi "^17.6.0" - tslib "^2.3.1" - "@docusaurus/utils-validation@2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.18.tgz#0dabf113d2c53ee685a715cd4caae6e219e9e41e" @@ -2072,27 +1937,6 @@ js-yaml "^4.1.0" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz#6a696e2ec5e50b2271f2d26d31562e9f3e2bc559" - integrity sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA== - dependencies: - "@docusaurus/logger" "2.0.0-beta.17" - "@svgr/webpack" "^6.0.0" - file-loader "^6.2.0" - fs-extra "^10.0.1" - github-slugger "^1.4.0" - globby "^11.0.4" - gray-matter "^4.0.3" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.4" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.3.1" - url-loader "^4.1.1" - webpack "^5.69.1" - "@docusaurus/utils@2.0.0-beta.18": version "2.0.0-beta.18" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.18.tgz#c3fe0e9fac30db4510962263993fd0ee2679eebb" @@ -2227,7 +2071,7 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@slorber/static-site-generator-webpack-plugin@^4.0.1", "@slorber/static-site-generator-webpack-plugin@^4.0.4": +"@slorber/static-site-generator-webpack-plugin@^4.0.4": version "4.0.4" resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.4.tgz#2bf4a2545e027830d2aa5eb950437c26a289b0f1" integrity sha512-FvMavoWEIePps6/JwGCOLYKCRhuwIHhMtmbKpBFgzNkxwpa/569LfTkrbRk1m1I3n+ezJK4on9E1A6cjuZmD9g== @@ -2327,7 +2171,7 @@ deepmerge "^4.2.2" svgo "^2.5.0" -"@svgr/webpack@^6.0.0", "@svgr/webpack@^6.2.1": +"@svgr/webpack@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== @@ -2813,10 +2657,10 @@ ajv@^8.0.0, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" -algoliasearch-helper@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz#c0a0493df84d850360f664ad7a9d4fc78a94fd78" - integrity sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w== +algoliasearch-helper@^3.7.4: + version "3.7.4" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.4.tgz#3812ea161da52463ec88da52612c9a363c1b181d" + integrity sha512-KmJrsHVm5TmxZ9Oj53XdXuM4CQeu7eVFnB15tpSFt+7is1d1yVCv3hxCLMqYSw/rH42ccv013miQpRr268P8vw== dependencies: "@algolia/events" "^4.0.1" @@ -2840,30 +2684,30 @@ algoliasearch@^4.0.0: "@algolia/requester-node-http" "4.11.0" "@algolia/transporter" "4.11.0" -algoliasearch@^4.12.1: - version "4.12.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.12.2.tgz#d7672a15b8fd1b261d9ae193535b68bcb189cfd2" - integrity sha512-bn1P9+V415zeDQJtXn+1SwuwedEAv9/LJAxt8XwR6ygH/sMwaHSm2hpkz8wIbCBt/tKQ43TL672Kyxzv5PwGgQ== +algoliasearch@^4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== dependencies: - "@algolia/cache-browser-local-storage" "4.12.2" - "@algolia/cache-common" "4.12.2" - "@algolia/cache-in-memory" "4.12.2" - "@algolia/client-account" "4.12.2" - "@algolia/client-analytics" "4.12.2" - "@algolia/client-common" "4.12.2" - "@algolia/client-personalization" "4.12.2" - "@algolia/client-search" "4.12.2" - "@algolia/logger-common" "4.12.2" - "@algolia/logger-console" "4.12.2" - "@algolia/requester-browser-xhr" "4.12.2" - "@algolia/requester-common" "4.12.2" - "@algolia/requester-node-http" "4.12.2" - "@algolia/transporter" "4.12.2" + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" -amplitude-js@^8.17.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/amplitude-js/-/amplitude-js-8.17.0.tgz#fa20e28fa3945fd0447cfa2bfadfe5a7b2c71c5f" - integrity sha512-9Ovx/15Wt4byNSKpesaTaNnHmwgkV9pn0BfI70qHr0iaPgEAtMV0HdA+Zs6555ODp3pvrmj5JTXDl3/DPLmNRQ== +amplitude-js@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/amplitude-js/-/amplitude-js-8.18.0.tgz#5c709aa657f3c5dd0a2e9e21a0dec3493d8658e5" + integrity sha512-HIg6nQL2zMyGbRCWXEVWLu/r7pkwohWNl4OTDzYbxpP+oFsVncHoYlDXisQPNMlb4tPyWrzcIHtQQKTIC/BeNA== dependencies: "@amplitude/analytics-connector" "1.0.0" "@amplitude/ua-parser-js" "0.7.26" @@ -3019,7 +2863,7 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@^10.3.7, autoprefixer@^10.4.2, autoprefixer@^10.4.4: +autoprefixer@^10.3.7, autoprefixer@^10.4.4: version "10.4.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.4.tgz#3e85a245b32da876a893d3ac2ea19f01e7ea5a1e" integrity sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA== @@ -3055,7 +2899,7 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" -babel-loader@^8.2.3, babel-loader@^8.2.4: +babel-loader@^8.2.4: version "8.2.4" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== @@ -3876,7 +3720,7 @@ css-declaration-sorter@^6.0.3: dependencies: timsort "^0.3.0" -css-loader@^6.6.0, css-loader@^6.7.1: +css-loader@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== @@ -3946,18 +3790,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.1.12: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.2.1.tgz#e96673c8fb2d4fba589b40c75167fe398bc9a5c0" - integrity sha512-M/qkiVwnKfGiolf20yDeOWPDlIqf9NItkQYUYDQluBTUITCFnNfuFrAeRln0P6tSyDeCUOgmqQWW++B4A3gNgQ== - dependencies: - autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.0" - postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.0" - postcss-reduce-idents "^5.1.0" - postcss-zindex "^5.1.0" - cssnano-preset-advanced@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.1.tgz#f4fa7006aab67e354289b3efd512c93a272b3874" @@ -3970,41 +3802,6 @@ cssnano-preset-advanced@^5.3.1: postcss-reduce-idents "^5.2.0" postcss-zindex "^5.1.0" -cssnano-preset-default@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz#2579d38b9217746f2cf9f938954a91e00418ded6" - integrity sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg== - dependencies: - css-declaration-sorter "^6.0.3" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.0" - postcss-discard-comments "^5.1.0" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.0" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.0" - postcss-merge-rules "^5.1.0" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.0" - postcss-minify-params "^5.1.0" - postcss-minify-selectors "^5.2.0" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.0" - postcss-normalize-repeat-style "^5.1.0" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.0" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.0" - postcss-ordered-values "^5.1.0" - postcss-reduce-initial "^5.1.0" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.0" - cssnano-preset-default@^5.2.5: version "5.2.5" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz#267ded811a3e1664d78707f5355fcd89feeb38ac" @@ -4045,7 +3842,7 @@ cssnano-utils@^3.1.0: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano@^5.0.17, cssnano@^5.0.6, cssnano@^5.1.5: +cssnano@^5.0.6, cssnano@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.5.tgz#5f3f519538c7f1c182c527096892243db3e17397" integrity sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg== @@ -5615,10 +5412,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.37: - version "0.2.0-alpha.37" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.37.tgz#b87ff42d528d6d050098a560f0294fbdd12adb78" - integrity sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q== +infima@0.2.0-alpha.38: + version "0.2.0-alpha.38" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.38.tgz#e41d95c7cd82756549b17df12f613fed4af3d528" + integrity sha512-1WsmqSMI5IqzrUx3goq+miJznHBonbE3aoqZ1AR/i/oHhroxNeSV6Awv5VoVfXBhfTzLSnxkHaRI2qpAMYcCzw== inflight@^1.0.4: version "1.0.6" @@ -6482,7 +6279,7 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^2.5.3, mini-css-extract-plugin@^2.6.0: +mini-css-extract-plugin@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== @@ -7004,11 +6801,6 @@ postcss-convert-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz#87be4e0953bf599935837b940c701f8d4eca7d0b" - integrity sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg== - postcss-discard-comments@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" @@ -7019,11 +6811,6 @@ postcss-discard-duplicates@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-empty@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810" - integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA== - postcss-discard-empty@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" @@ -7050,14 +6837,6 @@ postcss-loader@^6.2.1: klona "^2.0.5" semver "^7.3.5" -postcss-merge-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.0.tgz#948e1183cd659cfb5f99c7389f5fcec83c8f9a00" - integrity sha512-l+awq6+uUiCILsHahWK5KE25495I4oCKlUrIA+EdBvklnVdWlBEsbkzq5+ouPKb8OAe4WwRBgFvaSq7f77FY+w== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-merge-idents@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" @@ -7066,14 +6845,6 @@ postcss-merge-idents@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-merge-longhand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95" - integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.0" - postcss-merge-longhand@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz#a49e2be6237316e3b55e329e0a8da15d1f9f47ab" @@ -7082,16 +6853,6 @@ postcss-merge-longhand@^5.1.3: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" -postcss-merge-rules@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f" - integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - postcss-merge-rules@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" @@ -7109,15 +6870,6 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377" - integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-minify-gradients@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" @@ -7127,15 +6879,6 @@ postcss-minify-gradients@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e" - integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg== - dependencies: - browserslist "^4.16.6" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-minify-params@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" @@ -7236,13 +6979,6 @@ postcss-normalize-url@^5.1.0: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c" - integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-whitespace@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" @@ -7250,14 +6986,6 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f" - integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - postcss-ordered-values@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" @@ -7266,13 +6994,6 @@ postcss-ordered-values@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-reduce-idents@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.1.0.tgz#386b65cf861a9045663bd349d572027ab138ca4a" - integrity sha512-2xDoPTzv98D/HFDrGTgVEBlcuS47wvua2oc4g2WoZdYPwzPWMWb2TCRruCyN7vbl+HAtVLGvEOMZIZb3wYgv7w== - dependencies: - postcss-value-parser "^4.2.0" - postcss-reduce-idents@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" @@ -7326,13 +7047,6 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-unique-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz#70a945da1b0599d00f617222a44ba1d82a676694" - integrity sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA== - dependencies: - postcss-selector-parser "^6.0.5" - postcss-unique-selectors@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" @@ -7382,11 +7096,6 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz#392460acf63540960e5e3caa699d851264e99b89" - integrity sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg== - prism-react-renderer@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" @@ -7507,11 +7216,6 @@ query-string@5: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - querystringify@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -8034,7 +7738,7 @@ rtl-detect@^1.0.4: resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== -rtlcss@^3.3.0: +rtlcss@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== @@ -8098,10 +7802,10 @@ sass-loader@^10.1.1: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.49.9: - version "1.49.9" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9" - integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A== +sass@^1.49.10: + version "1.49.10" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.10.tgz#7b83cee0f03bbba443111b3f94944fde2b0c7a6b" + integrity sha512-w37zfWJwKu4I78U4z63u1mmgoncq+v3iOB4yzQMPyAPVHHawaQSnu9C9ysGQnZEhW609jkcLioJcMCqm75JMdg== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -8398,12 +8102,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" - integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== - -source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -9267,7 +8966,7 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.69.1, webpack@^5.70.0: +webpack@^5.70.0: version "5.70.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==