diff --git a/.editorconfig b/.editorconfig index ae10a5cc..a090db43 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,6 @@ indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true + +[{*.diff,*.patch}] +trim_trailing_whitespace = false diff --git a/.eslintignore b/.eslintignore index 12b3abfb..1ac2665e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,4 +3,5 @@ dist public node_modules *.esm.js -drupal \ No newline at end of file +/drupal +/drupal-* diff --git a/.eslintrc.json b/.eslintrc.json index 7d2bc200..e37c6a44 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,6 +19,11 @@ "node": true, "jest": true }, + "globals": { + "Drupal": true, + "drupalSettings": true, + "jQuery": true + }, "rules": { "react/prop-types": 0, "prettier/prettier": ["error"], diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 944c2ce3..8436a055 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,4 +1,5 @@ This pull request is for: (mark with an "x") + - [ ] `examples/*` - [ ] `modules/next` - [ ] `packages/next-drupal` @@ -11,8 +12,8 @@ _Please add a link to the GitHub issue where this problem is discussed._ - [ ] I need help adding tests. (mark with an "x") - _Code changes need test coverage. If you don't know - how to make tests, check this box to ask for help._ + _Code changes need test coverage. If you don't know + how to make tests, check this box to ask for help._ ## Describe your changes diff --git a/.github/version-pr/action.yml b/.github/version-pr/action.yml index 9e82caeb..8d3bddcf 100644 --- a/.github/version-pr/action.yml +++ b/.github/version-pr/action.yml @@ -4,5 +4,5 @@ outputs: version: description: "npm package version" runs: - using: "node16" + using: node20 main: "index.js" diff --git a/.github/workflows/next-drupal-query.yml b/.github/workflows/next-drupal-query.yml index 0e5515c5..00499fbc 100644 --- a/.github/workflows/next-drupal-query.yml +++ b/.github/workflows/next-drupal-query.yml @@ -1,6 +1,8 @@ name: next-drupal-query on: push: + branches: + - main pull_request: types: [opened, synchronize, edited] @@ -12,4 +14,4 @@ jobs: - name: Install modules run: yarn - name: Run tests - run: yarn test packages/next-drupal-query + run: yarn workspace next-drupal-query test diff --git a/.github/workflows/next-drupal.yml b/.github/workflows/next-drupal.yml index 477cd61e..0f1c132c 100644 --- a/.github/workflows/next-drupal.yml +++ b/.github/workflows/next-drupal.yml @@ -1,5 +1,8 @@ name: next-drupal on: + push: + branches: + - main pull_request_target: types: [opened, reopened, synchronize] @@ -14,7 +17,7 @@ jobs: - name: Install modules run: yarn - name: Run tests - run: yarn test packages/next-drupal + run: yarn workspace next-drupal test env: DRUPAL_BASE_URL: ${{ secrets.DRUPAL_BASE_URL }} DRUPAL_USERNAME: ${{ secrets.DRUPAL_USERNAME }} diff --git a/.github/workflows/next.yml b/.github/workflows/next.yml index 58ddae48..d760149b 100644 --- a/.github/workflows/next.yml +++ b/.github/workflows/next.yml @@ -1,6 +1,8 @@ name: next on: push: + branches: + - main pull_request: branches: - main @@ -11,14 +13,20 @@ jobs: strategy: matrix: # Supported PHP versions: https://www.drupal.org/docs/getting-started/system-requirements/php-requirements - php: ["8.0", "8.1", "8.2"] + php: + - "8.1" + - "8.2" + - "8.3" # Supported Drupal versions: https://www.drupal.org/project/drupal - drupal: ["9.5", "10.0"] + drupal: + - "10.0.x" + - "10.1.x" + - "10.2.x" exclude: - - drupal: "9.5" - php: "8.2" - - drupal: "10.0" - php: "8.0" + - drupal: "10.0.x" + php: "8.3" + - drupal: "10.1.x" + php: "8.3" name: Drupal ${{ matrix.drupal }} - PHP ${{ matrix.php }} services: mysql: @@ -51,7 +59,7 @@ jobs: run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Setup Drupal run: | - COMPOSER_MEMORY_LIMIT=-1 composer create-project drupal/recommended-project:${{ matrix.drupal }}.x ~/drupal --no-interaction --no-install + COMPOSER_MEMORY_LIMIT=-1 composer create-project drupal/recommended-project:${{ matrix.drupal }} ~/drupal --no-interaction --no-install cd ~/drupal composer config extra.enable-patching true composer config extra.compile-mode all @@ -63,11 +71,6 @@ jobs: composer config allow-plugins true -n COMPOSER_MEMORY_LIMIT=-1 composer require drupal/core-dev --no-install composer install - - name: Add phpspec/prophecy-phpunit - run: | - cd ~/drupal - COMPOSER_MEMORY_LIMIT=-1 composer require --dev phpspec/prophecy-phpunit:^2 -W - if: ${{ startsWith(matrix.drupal, '9') }} - name: Run phpcs run: | ~/drupal/vendor/bin/phpcs -p -s --colors --standard=modules/next/phpcs.xml modules/next diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index bfbb213d..87e45bf0 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - name: Install dependencies run: yarn install - name: Determine version diff --git a/.gitignore b/.gitignore index 798e6059..16411a16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,97 +1,44 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories +# dependencies node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env - -# gatsby files -.cache/ - -# Mac files -.DS_Store - -# Yarn -yarn-error.log +package-lock.json .pnp/ .pnp.js -# Yarn Integrity file -.yarn-integrity -.yarn +.yarn/install-state.gz -.netlify/ +# build/test artifacts +/.eslintcache +/packages/*/.turbo +/packages/*/coverage +/packages/*/dist -# Editors -.vscode/* -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json +# output of 'npm pack' +/packages/*/*.tgz -# phpstorm editor -.idea/ +# misc +.DS_Store +*.pem -# NPM lock files -package-lock.json +# IDE files +/.idea +/.vscode +!/.vscode/tasks.json +!/.vscode/launch.json +!/.vscode/extensions.json + +# debug +lerna-debug.log* +npm-debug.log* +yarn-debug.log* +yarn-error.log* -# Cypress -examples/**/cypress/screenshots -examples/**/cypress/videos +# environment variables file +.env +.envrc -# Other -*__clone* -dist -examples/certificates/* -drupal/web/sites/default/settings.local.php -.next -drupal/web/phpunit.xml -keys +# more misc +/*__clone__ +/drupal/web/phpunit.xml +/drupal/web/sites/default/settings.local.php +/drupal-* diff --git a/.husky/pre-commit b/.husky/pre-commit index 0da96d6b..d24fdfc6 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -npx pretty-quick --staged +npx lint-staged diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 00000000..b445e5ee --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,3 @@ +{ + "*": "prettier --write --ignore-unknown" +} diff --git a/.nvmrc b/.nvmrc index 6f7f377b..3f430af8 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v16 +v18 diff --git a/.prettierignore b/.prettierignore index f38f730e..a0c57f84 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,14 +1,26 @@ -cache -.cache +# Ignore everything. +/* + +# Don't ignore some files in the root directory. +!/*.js +!/*.ts +!/*.md +!/*.json + +# Don't ignore these nested directories. +!/examples +!/modules +!/packages +!/scripts +!/starters +!/test +!/www + +# In any nested folder, ignore these paths: +.next +CHANGELOG.md +composer.json +dist package.json package-lock.json public -CHANGELOG.md -.yarn -packages/codemod/transforms/__testfixtures__/**/* -packages/codemod/transforms/__tests__/**/* -packages/codemod/**/*.js -packages/codemod/**/*.d.ts -dist -.next -./drupal diff --git a/.prettierrc.json b/.prettierrc.json index 48e90e8d..45d647e5 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,7 +1,14 @@ { - "endOfLine": "lf", "semi": false, - "singleQuote": false, - "tabWidth": 2, - "trailingComma": "es5" + "trailingComma": "es5", + "overrides": [ + { + "files": "modules/**/*", + "options": { + "semi": true, + "singleQuote": true, + "trailingComma": "all" + } + } + ] } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d413922e..424233dc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,7 +157,7 @@ For example: The `` can be empty (e.g. if the change is a global or difficult to assign to a single component), in which case the parentheses are omitted and the first line just becomes: `: ` -The `` is optional. It must be used for a BREAKING CHANGE. For example, `fix(widgets)!: Fix incompatibility with widget v2` indicates the bugfix required a breaking change. +The `` is optional. It should be used for a BREAKING CHANGE. For example, `fix(widgets)!: Fix incompatibility with widget v2` indicates the bugfix required a breaking change. Note that the "BREAKING CHANGE:" FOOTER is REQUIRED (see below). ### Commit message `` diff --git a/MAINTAINING.md b/MAINTAINING.md new file mode 100644 index 00000000..d342fb96 --- /dev/null +++ b/MAINTAINING.md @@ -0,0 +1,213 @@ +# Maintenance guide + +This document is for maintainers to explain the various procedures for all the projects in this monorepo. + +## Making releases + +### `next` (Drupal Module) + +While maintaining releases for packages, starters and examples is done with Lerna, releases for Drupal modules are controlled by drupal.org’s infrastructure, so these steps don’t involve Lerna. + +1. Optionally, create a new branch on drupal.org. + + 1. Follow the “Release branches” rules described on the [“Release naming conventions” documentation](https://www.drupal.org/docs/develop/git/git-for-drupal-project-maintainers/release-naming-conventions). + 2. On Drupal.org’s GitLab, [create a new branch](https://git.drupalcode.org/project/next/-/tags/new). + 3. In the monorepo’s `package.json`, update the `sync:modules` script to use the new branch name. The monorepo’s `main` branch will then sync with this new drupal.org branch. + + For example, change: + + ``` + "sync:modules": "./scripts/sync-repo.sh 2.x git@git.drupal.org:project/ \"modules/*\"", + ``` + + to: + + ``` + "sync:modules": "./scripts/sync-repo.sh 3.x git@git.drupal.org:project/ \"modules/*\"", + ``` + +2. Run `yarn sync:modules` to sync the latest commit on `main` with the git repo on drupal.org. All recent changes will be squashed into a commit using the latest commit message. + +3. On Drupal.org’s GitLab, [tag a release](https://git.drupalcode.org/project/next/-/tags/new) following the [“Release tags naming conventions” docs](https://www.drupal.org/docs/develop/git/git-for-drupal-project-maintainers/release-naming-conventions#release-tags). + +4. On Drupal.org’s Next.js project page, [create a release](https://www.drupal.org/node/add/project-release/3192303) using the git tag you just created. + +### `next-drupal` (NPM package) + +Since we are using semantic commits, Lerna is able to read the git commits since the last release to auto-generate a CHANGELOG and to determine if the next release should be a: + +- major version bump (e.g. 1.0.0 to 2.0.0). This will happen when Lerna finds a `BREAKING CHANGE` commit message. +- minor version bump (e.g. 1.0.0 to 1.1.0). This will happen when Lerna finds a `feat` commit message. +- patch version bump (e.g. 1.0.0 to 1.0.1). This is the default version bump for bug fixes, etc. +- prerelease version bump (e.g. 1.0.0-alpha.0 to 1.0.0-alpha.1) + +We’ll be using Lerna’s `--no-push` flag so that Lerna does not push git tags and commits automatically. This allows us to delete any commits and tags locally if we make a mistake. + +1. **Tag a new release** + + - **to make the next logical semantic version**, run: + + ``` + npx lerna version --no-push + ``` + + - **to make a new alpha prerelease version:** + + If the current version is not a prerelease version, you’ll need to explicitly tell Lerna that the next version should be an alpha release with: + + ``` + npx lerna version --conventional-prerelease --no-push + ``` + + When creating a new prerelease version of `next-drupal`, Lerna will automatically determine if it needs to be a `premajor` (2.0.0-alpha.0), `preminor` (1.1.0-alpha.0), or `prepatch` (1.0.1-alpha.0) version. + + - **to make a new beta prerelease version:** + + If the current version is not a beta version, you’ll need to explicitly tell Lerna that the next version should be a beta release with: + + ``` + npx lerna version --conventional-prerelease --preid beta --no-push + ``` + + - **to make a new regular version from a prerelease version:** + + If the current version is a prerelease version, you’ll need to explicitly tell Lerna that the next version should no longer be a prerelease version with: + + ``` + npx lerna version --conventional-graduate --no-push + ``` + + **Confirm changes** + + When Lerna asks “Are you sure you want to create these versions?”, carefully check if the versions listed are the ones you expect. + +2. **Push git changes** with: + + ``` + git push + git push --tags + ``` + +3. **Publish the release** + + Ensure you have authenticated with npmjs.com using `npm login`. + + Then, while your local git working area is clean of changes and `HEAD` is pointing to the commit created in step 1, have Lerna build, prepare, package and publish your release. + + For a new prerelease version, specify the `canary` dist-tag with: + + ``` + npx lerna publish --dist-tag canary from-git + ``` + + Otherwise, use: + + ``` + npx lerna publish from-git + ``` + + Maintainers will need permission to publish to `next-drupal` on npmjs.com. http://npmjs.com/package/next-drupal + +4. **Confirm the release** + + Look at the “Current Tags” section of [next-drupal’s npmjs page](https://www.npmjs.com/package/next-drupal?activeTab=versions) and confirm that the newest release is listed and that the `latest` tag and the `canary` tag point at the expected versions. + +For more information, see Lerna’s [version docs](https://github.com/lerna/lerna/tree/main/libs/commands/version) and [publish docs](https://github.com/lerna/lerna/tree/main/libs/commands/publish). + +### Examples + +The code in the examples repos do not strictly require a versioned release since they simply contain an example usage of the latest `next-drupal` release. However, each example has its own separate git repo so developers can see previous versions of the latest example. + +1. Optionally, **create a tag** that is Lerna-compatible matching the format: `[project]@[version]`, e.g. `example-auth@1.1.2` + + ``` + git tag example-NAME@1.0.0 + git push --tags + ``` + +2. **Sync git repositories** with: + + ``` + yarn sync:examples + ``` + + All recent changes on `main` will be squashed into a commit on the target git repo using the latest commit message. + +### Starters + +1. **Update package.json** with the new release version for that starter, e.g. `2.0.0-alpha.0`. This is important so the developer knows which version of the starter they had when they first started their project. + +2. **Create a tag** that is Lerna-compatible matching the format: `[project]@[version]`, e.g. `basic-starter@2.0.0-alpha.0` + + ``` + git tag NAME-starter@2.0.0 + git push --tags + ``` + +3. **Sync git repositories** + + If the release is a prerelease, sync the monorepo with: + + ``` + yarn sync:starters + ``` + + If the release is not a prerelease, sync the monorepo with: + + ``` + yarn sync:starters:release + ``` + + All recent changes on `main` will be squashed into a commit on the target git repo using the latest commit message. + +4. **Create a GitHub release and tag** + + The git tag created in step 1 was for the monorepo; it doesn’t exist in the starters’ git repos. We’ll create a GitHub release to make it easier for developers to see the changes between different versions of the starter. + + To create a GitHub release, go to the releases page for: + + - [basic-starter](https://github.com/chapter-three/next-drupal-basic-starter/releases) + - [graphql-starter](https://github.com/chapter-three/next-drupal-graphql-starter/releases) + + And then: + + 1. Click the “Draft a new release” button. + 2. In the **“Target:” drop-down**, select the `main` branch if this is going to be a normal release or select the `canary` branch if this is going to be a prerelease. + 3. In the **“Choose a tag” widget**, type the new git tag, e.g. `2.0.0-alpha.0`, and hit `enter`. The help text will say “Excellent! This tag will be created from the target when you publish this release.” + 4. In the “Release title” text field, type the same tag as the previous step. + 5. Check either the “Set as a pre-release” checkbox or the “Set as the latest release” checkbox. + 6. Click the “Publish release” button. + +### Docs + +@TODO: Expand details the next time docs are deployed. + +Documentation is deployed to Vercel and controlled via the following Git branches: + +- `v1.6` +- `v1` +- `v0` + +## Tests + +The Jest tests currently rely on a Drupal 9.4 installation deployed to [tests.next-drupal.org](https://tests.next-drupal.org) on Pantheon. + +Developers will need a copy of the db, a copy of the installation files, and to set the following environment variables when running tests locally: + +```dotenv +export DRUPAL_BASE_URL='https://tests.next-drupal.org' +export DRUPAL_CLIENT_ID='example-xxxx' +export DRUPAL_CLIENT_SECRET='example-xxxx' +export DRUPAL_USERNAME='Umami' +export DRUPAL_PASSWORD='example-xxxx' +``` + +The files, db and environment variable values can be obtained from other Chapter Three developers. + +@TODO: Replace the live server with a way to install Drupal with the needed demo content and config. The updated docs should not be here, but instead in CONTRIBUTING.md. + +## Drupal (`/drupal` directory) + +This is probably a single Drupal install with the config for all the examples and is used for running Cypress tests. + +@TODO Confirm speculation by getting a copy of the database so `/drupal` can be run locally. diff --git a/SECURITY.md b/SECURITY.md index 94b79253..7885a945 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -9,20 +9,20 @@ Refer to the table below for versions supported with security updates. | Version | Supported | | ------- | ------------------ | | 1.x.x | :white_check_mark: | -| < 1.0.0 | :x: | +| < 1.0.0 | :x: | ### `next` Drupal module | Version | Supported | | ------- | ------------------ | | 1.x.x | :white_check_mark: | -| < 1.0.0 | :x: | +| < 1.0.0 | :x: | ## Reporting a Vulnerability If you believe you have found a security vulnerability in `next-drupal` package or the `next` Drupal module, we encourage you to let us know right away. -We will do our best to quickly fix the problem. +We will do our best to quickly fix the problem. We will sync with the [Drupal Security Team](https://www.drupal.org/drupal-security-team) if the vulnerability affects the `next` Drupal module. diff --git a/drupal/.gitignore b/drupal/.gitignore index c14a5ce0..c47f6cf6 100644 --- a/drupal/.gitignore +++ b/drupal/.gitignore @@ -29,3 +29,6 @@ /oauth-keys/*.key /web/sites/default/settings.local.php /web/sites/default/services.local.yml + +# build/test artifacts +/.turbo diff --git a/examples/example-auth/.gitignore b/examples/example-auth/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-auth/.gitignore +++ b/examples/example-auth/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-auth/cypress/support/index.js b/examples/example-auth/cypress/support/index.js index d68db96d..a80764cb 100644 --- a/examples/example-auth/cypress/support/index.js +++ b/examples/example-auth/cypress/support/index.js @@ -14,7 +14,7 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import "./commands" // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/examples/example-auth/package.json b/examples/example-auth/package.json index e4ad269a..da0bfe76 100644 --- a/examples/example-auth/package.json +++ b/examples/example-auth/package.json @@ -14,7 +14,7 @@ "test:e2e:ci": "start-server-and-test 'yarn preview' http://localhost:3434 cy:run" }, "dependencies": { - "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.1", "jwt-decode": "^3.1.2", "next": "^12.2.3", @@ -31,6 +31,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-auth/types/next-auth.d.ts b/examples/example-auth/types/next-auth.d.ts index 30431109..c81ae396 100644 --- a/examples/example-auth/types/next-auth.d.ts +++ b/examples/example-auth/types/next-auth.d.ts @@ -1,4 +1,4 @@ -import { DefaultSession, Session } from "next-auth" +import { DefaultSession } from "next-auth" declare module "next-auth" { interface Session { diff --git a/examples/example-blog/.gitignore b/examples/example-blog/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-blog/.gitignore +++ b/examples/example-blog/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-blog/components/meta.tsx b/examples/example-blog/components/meta.tsx index 71ca3ffd..a7defa23 100644 --- a/examples/example-blog/components/meta.tsx +++ b/examples/example-blog/components/meta.tsx @@ -14,6 +14,7 @@ export function Meta({ title, tags }: MetaProps) { return ( {`${title} | Next.js for Drupal`} - - + + )} diff --git a/examples/example-blog/package.json b/examples/example-blog/package.json index 7c2387fd..e042cfdd 100644 --- a/examples/example-blog/package.json +++ b/examples/example-blog/package.json @@ -14,7 +14,7 @@ "test:e2e:ci": "start-server-and-test 'yarn preview' http://localhost:3030 cy:run" }, "dependencies": { - "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.1", "classnames": "^2.3.1", "drupal-jsonapi-params": "^1.2.2", @@ -33,6 +33,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-blog/tsconfig.json b/examples/example-blog/tsconfig.json index 496d2179..82f71f96 100644 --- a/examples/example-blog/tsconfig.json +++ b/examples/example-blog/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -19,24 +15,12 @@ "jsx": "preserve", "baseUrl": "./", "paths": { - "@/components/*": [ - "src/components/*" - ], - "@utils/*": [ - "src/utils/*" - ], - "@/config": [ - "src/config" - ] + "@/components/*": ["src/components/*"], + "@utils/*": ["src/utils/*"], + "@/config": ["src/config"] }, "incremental": true }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] } diff --git a/examples/example-client/.gitignore b/examples/example-client/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-client/.gitignore +++ b/examples/example-client/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-client/package.json b/examples/example-client/package.json index 30186c40..ca720466 100644 --- a/examples/example-client/package.json +++ b/examples/example-client/package.json @@ -26,6 +26,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-custom-auth/.gitignore b/examples/example-custom-auth/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-custom-auth/.gitignore +++ b/examples/example-custom-auth/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-custom-auth/package.json b/examples/example-custom-auth/package.json index d7ff29b4..96de2d3a 100644 --- a/examples/example-custom-auth/package.json +++ b/examples/example-custom-auth/package.json @@ -21,6 +21,6 @@ }, "devDependencies": { "eslint-config-next": "^12.0.10", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-custom-cache/.gitignore b/examples/example-custom-cache/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-custom-cache/.gitignore +++ b/examples/example-custom-cache/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-custom-cache/lib/drupal.ts b/examples/example-custom-cache/lib/drupal.ts index cf77107e..9e990b49 100644 --- a/examples/example-custom-cache/lib/drupal.ts +++ b/examples/example-custom-cache/lib/drupal.ts @@ -1,4 +1,4 @@ -import { Experiment_DrupalClient, DataCache } from "next-drupal" +import { DataCache, DrupalClient } from "next-drupal" import Redis from "ioredis" const redis = new Redis(process.env.REDIS_URL) diff --git a/examples/example-custom-cache/package.json b/examples/example-custom-cache/package.json index dd8cd031..ca938f2e 100644 --- a/examples/example-custom-cache/package.json +++ b/examples/example-custom-cache/package.json @@ -22,6 +22,6 @@ }, "devDependencies": { "eslint-config-next": "^12.0.10", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-custom-fetcher/.gitignore b/examples/example-custom-fetcher/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-custom-fetcher/.gitignore +++ b/examples/example-custom-fetcher/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-custom-fetcher/package.json b/examples/example-custom-fetcher/package.json index 75926de6..d65b951b 100644 --- a/examples/example-custom-fetcher/package.json +++ b/examples/example-custom-fetcher/package.json @@ -22,6 +22,6 @@ }, "devDependencies": { "eslint-config-next": "^12.0.10", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-custom-serializer/.gitignore b/examples/example-custom-serializer/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-custom-serializer/.gitignore +++ b/examples/example-custom-serializer/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-custom-serializer/package.json b/examples/example-custom-serializer/package.json index 0debf60f..b2259307 100644 --- a/examples/example-custom-serializer/package.json +++ b/examples/example-custom-serializer/package.json @@ -22,6 +22,6 @@ }, "devDependencies": { "eslint-config-next": "^12.0.10", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-graphql/.gitignore b/examples/example-graphql/.gitignore index 78adc9ed..6686735a 100644 --- a/examples/example-graphql/.gitignore +++ b/examples/example-graphql/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,15 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-graphql/lib/drupal.ts b/examples/example-graphql/lib/drupal.ts index fdae367d..f1c78d5b 100644 --- a/examples/example-graphql/lib/drupal.ts +++ b/examples/example-graphql/lib/drupal.ts @@ -8,7 +8,6 @@ export const drupal = new DrupalClient( clientSecret: process.env.DRUPAL_CLIENT_SECRET, }, previewSecret: process.env.DRUPAL_PREVIEW_SECRET, - forceIframeSameSiteCookie: true, } ) diff --git a/examples/example-graphql/package.json b/examples/example-graphql/package.json index 0ceefbe6..ff4e04a7 100644 --- a/examples/example-graphql/package.json +++ b/examples/example-graphql/package.json @@ -26,6 +26,6 @@ "eslint-config-next": "^12.1.4", "postcss": "^8.4.12", "tailwindcss": "^3.0.23", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-graphql/pages/[...slug].tsx b/examples/example-graphql/pages/[...slug].tsx index ac383861..34cccf20 100644 --- a/examples/example-graphql/pages/[...slug].tsx +++ b/examples/example-graphql/pages/[...slug].tsx @@ -12,7 +12,7 @@ export default function NodePage({ resource }) { {resource.title} - + {resource && } diff --git a/examples/example-graphql/pages/index.tsx b/examples/example-graphql/pages/index.tsx index 48108c8f..2ea6daa6 100644 --- a/examples/example-graphql/pages/index.tsx +++ b/examples/example-graphql/pages/index.tsx @@ -10,6 +10,7 @@ export default function IndexPage({ articles }) { Next.js for Drupal diff --git a/examples/example-graphql/yarn.lock b/examples/example-graphql/yarn.lock index ce8d69e7..a1d683d6 100644 --- a/examples/example-graphql/yarn.lock +++ b/examples/example-graphql/yarn.lock @@ -1471,12 +1471,7 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@^3.1.30: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" - integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== - -nanoid@^3.3.1: +nanoid@^3.1.30, nanoid@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== @@ -1950,12 +1945,7 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -source-map-js@^1.0.1: - 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@^1.0.1, 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== diff --git a/examples/example-marketing/.gitignore b/examples/example-marketing/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-marketing/.gitignore +++ b/examples/example-marketing/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-marketing/components/meta.tsx b/examples/example-marketing/components/meta.tsx index 71ca3ffd..a7defa23 100644 --- a/examples/example-marketing/components/meta.tsx +++ b/examples/example-marketing/components/meta.tsx @@ -14,6 +14,7 @@ export function Meta({ title, tags }: MetaProps) { return ( {`${title} | Next.js for Drupal`} - - + + )} diff --git a/examples/example-marketing/cypress/support/index.js b/examples/example-marketing/cypress/support/index.js index d68db96d..a80764cb 100644 --- a/examples/example-marketing/cypress/support/index.js +++ b/examples/example-marketing/cypress/support/index.js @@ -14,7 +14,7 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import "./commands" // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/examples/example-marketing/package.json b/examples/example-marketing/package.json index bfe7ae37..bd736e97 100644 --- a/examples/example-marketing/package.json +++ b/examples/example-marketing/package.json @@ -14,7 +14,7 @@ "test:e2e:ci": "start-server-and-test 'yarn preview' http://localhost:3001 cy:run" }, "dependencies": { - "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.1", "@tanstack/react-query": "^4.0.10", "classnames": "^2.3.1", @@ -35,6 +35,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-marketing/pages/_app.tsx b/examples/example-marketing/pages/_app.tsx index c4b28f39..3359d8ad 100644 --- a/examples/example-marketing/pages/_app.tsx +++ b/examples/example-marketing/pages/_app.tsx @@ -1,6 +1,10 @@ import * as React from "react" import Router from "next/router" -import { QueryClient, QueryClientProvider, Hydrate } from "@tanstack/react-query" +import { + QueryClient, + QueryClientProvider, + Hydrate, +} from "@tanstack/react-query" import NProgress from "nprogress" import { syncDrupalPreviewRoutes } from "next-drupal" import "nprogress/nprogress.css" diff --git a/examples/example-query/.gitignore b/examples/example-query/.gitignore index 78adc9ed..6686735a 100644 --- a/examples/example-query/.gitignore +++ b/examples/example-query/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,15 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-query/package.json b/examples/example-query/package.json index 9205888f..c32e7256 100644 --- a/examples/example-query/package.json +++ b/examples/example-query/package.json @@ -10,7 +10,7 @@ "lint": "next lint" }, "dependencies": { - "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.1", "clsx": "^1.2.1", "next": "^12.2.3", @@ -27,6 +27,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-query/pages/[...slug].tsx b/examples/example-query/pages/[...slug].tsx index c3b192c2..63914247 100644 --- a/examples/example-query/pages/[...slug].tsx +++ b/examples/example-query/pages/[...slug].tsx @@ -51,7 +51,7 @@ export async function getStaticProps(context) { } } - const type = path.jsonapi.resourceName as typeof RESOURCE_TYPES[number] + const type = path.jsonapi.resourceName as (typeof RESOURCE_TYPES)[number] if (!RESOURCE_TYPES.includes(type)) { return { diff --git a/examples/example-query/pages/index.tsx b/examples/example-query/pages/index.tsx index 37dcaa94..87570e1d 100644 --- a/examples/example-query/pages/index.tsx +++ b/examples/example-query/pages/index.tsx @@ -17,6 +17,7 @@ export default function IndexPage({ Example Query diff --git a/examples/example-query/types/drupal/field.ts b/examples/example-query/types/drupal/field.ts index 04cd45c1..ca34496f 100644 --- a/examples/example-query/types/drupal/field.ts +++ b/examples/example-query/types/drupal/field.ts @@ -8,7 +8,7 @@ export interface FieldTextFormatted { export type FieldEntityReference< Types, - Cardinality extends FieldCardinality = "limited" + Cardinality extends FieldCardinality = "limited", > = Cardinality extends "unlimited" ? Array> : Partial export type FieldList = keyof List diff --git a/examples/example-router-migration/.env.example b/examples/example-router-migration/.env.example new file mode 100644 index 00000000..951ea909 --- /dev/null +++ b/examples/example-router-migration/.env.example @@ -0,0 +1,12 @@ +# See https://next-drupal.org/docs/environment-variables + +# Required +NEXT_PUBLIC_DRUPAL_BASE_URL=https://site.example.com +NEXT_IMAGE_DOMAIN=site.example.com + +# Authentication +DRUPAL_CLIENT_ID=Retrieve this from /admin/config/services/consumer +DRUPAL_CLIENT_SECRET=Retrieve this from /admin/config/services/consumer + +# Required for On-demand Revalidation +DRUPAL_REVALIDATE_SECRET=Retrieve this from /admin/config/services/next diff --git a/examples/example-router-migration/.eslintrc.json b/examples/example-router-migration/.eslintrc.json new file mode 100644 index 00000000..7c1a3add --- /dev/null +++ b/examples/example-router-migration/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "extends": "next/core-web-vitals", + "root": true +} diff --git a/examples/example-router-migration/.gitignore b/examples/example-router-migration/.gitignore new file mode 100644 index 00000000..081b7c17 --- /dev/null +++ b/examples/example-router-migration/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# IDE files +/.idea +/.vscode + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-router-migration/.nvmrc b/examples/example-router-migration/.nvmrc new file mode 100644 index 00000000..9a2a0e21 --- /dev/null +++ b/examples/example-router-migration/.nvmrc @@ -0,0 +1 @@ +v20 diff --git a/examples/example-router-migration/.prettierignore b/examples/example-router-migration/.prettierignore new file mode 100644 index 00000000..03c8a68b --- /dev/null +++ b/examples/example-router-migration/.prettierignore @@ -0,0 +1,18 @@ +# Ignore everything. +/* + +# Format most files in the root directory. +!/*.js +!/*.ts +!/*.md +!/*.json +# But ignore some. +/package.json +/package-lock.json +/CHANGELOG.md + +# Don't ignore these nested directories. +!/app +!/components +!/lib +!/pages diff --git a/examples/example-router-migration/.prettierrc.json b/examples/example-router-migration/.prettierrc.json new file mode 100644 index 00000000..3c60a7b5 --- /dev/null +++ b/examples/example-router-migration/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "semi": false, + "trailingComma": "es5" +} diff --git a/examples/example-router-migration/CHANGELOG.md b/examples/example-router-migration/CHANGELOG.md new file mode 100644 index 00000000..e4d87c4d --- /dev/null +++ b/examples/example-router-migration/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. diff --git a/examples/example-router-migration/README.md b/examples/example-router-migration/README.md new file mode 100644 index 00000000..c694ee20 --- /dev/null +++ b/examples/example-router-migration/README.md @@ -0,0 +1,43 @@ +# example-router-migration + +Next.js recommends using their new App Router over the legacy Pages Router. The [full router migration guide](https://nextjs.org/docs/app/building-your-application/upgrading/app-router-migration) is available in the Next.js documentation. + +The new App Router is also designed to facilitate sites that need to migrate from the Pages Router in a piecemeal fashion rather than all at once. + +This codebase is an example of a `next-drupal` site that is in the middle of a Next.js Pages to App Router migration. + +## Piecemeal router migration steps + +### Initial migration + +1. Update the `next-drupal` package to the latest 2.x version. +2. Update the `next` module on your Drupal site to the latest 2.x version. + 1. The most recent version is available at https://www.drupal.org/project/next + 2. Run your Drupal site’s /update.php script. +3. Migrate from Preview Mode to Draft mode. Preview mode only works with the legacy Pages Router. Draft mode works with both routers. + 1. Update the `/pages/api/preview.ts` file to match the one in this Git repo. + 2. Update the `/pages/api/exit-preview.ts` file to match the one in this Git repo. + 3. Delete your `/pages/api/revalidate.ts` file. + 4. Create a `/app/api` directory and add all the files from this Git repo’s `/app/api` directory. + +### Piecemeal migration + +Follow [Next.js’ router migration guide](https://nextjs.org/docs/app/building-your-application/upgrading/app-router-migration). + +Over time, you will be moving all the files from `/pages` to `/app`. However, these JavaScript files should remain in the `/pages` directory to prevent Preview/Draft Mode from breaking: + +- `/pages/api/exit-preview.ts` +- `/pages/api/preview.ts` + +### Final migration steps + +1. Turn off the legacy Preview Mode. + 1. Go to the Next.js site configuration on your Drupal site at `/admin/config/services/next`. + 2. For each Next.js configuration, change the end of the URL in the “Draft URL (or Preview URL)” setting from `preview` to `draft`, e.g. `https://example.com/api/preview` to `https://example.com/api/draft`. +2. Delete the last files in your `/pages` directory: + - `/pages/api/exit-preview.ts` + - `/pages/api/preview.ts` + +## License + +Licensed under the [MIT license](https://github.com/chapter-three/next-drupal/blob/master/LICENSE). diff --git a/examples/example-router-migration/app/[...slug]/page.tsx b/examples/example-router-migration/app/[...slug]/page.tsx new file mode 100644 index 00000000..2a76ee5e --- /dev/null +++ b/examples/example-router-migration/app/[...slug]/page.tsx @@ -0,0 +1,115 @@ +import { draftMode } from "next/headers" +import { notFound } from "next/navigation" +import { getDraftData } from "next-drupal/draft" +import { Article } from "@/components/drupal/Article" +import { BasicPage } from "@/components/drupal/BasicPage" +import { drupal } from "@/lib/drupal" +import type { Metadata, ResolvingMetadata } from "next" +import type { DrupalNode, JsonApiParams } from "next-drupal" + +async function getNode(slug: string[]) { + const path = slug.join("/") + + const params: JsonApiParams = {} + + const draftData = getDraftData() + + if (draftData.slug === `/${path}`) { + params.resourceVersion = draftData.resourceVersion + } + + // Translating the path also allows us to discover the entity type. + const translatedPath = await drupal.translatePath(path) + + if (!translatedPath) { + throw new Error("Resource not found", { cause: "NotFound" }) + } + + const type = translatedPath.jsonapi?.resourceName! + const uuid = translatedPath.entity.uuid + + if (type === "node--article") { + params.include = "field_image,uid" + } + + const resource = await drupal.getResource(type, uuid, { + params, + }) + + if (!resource) { + throw new Error( + `Failed to fetch resource: ${translatedPath?.jsonapi?.individual}`, + { + cause: "DrupalError", + } + ) + } + + return resource +} + +type NodePageParams = { + slug: string[] +} +type NodePageProps = { + params: NodePageParams + searchParams: { [key: string]: string | string[] | undefined } +} + +export async function generateMetadata( + { params: { slug } }: NodePageProps, + parent: ResolvingMetadata +): Promise { + let node + try { + node = await getNode(slug) + } catch (e) { + // If we fail to fetch the node, don't return any metadata. + return {} + } + + return { + title: node.title, + } +} + +const RESOURCE_TYPES = ["node--page", "node--article"] + +export async function generateStaticParams(): Promise { + // TODO: Replace getStaticPathsFromContext() usage since there is no context. + const paths = await drupal.getStaticPathsFromContext(RESOURCE_TYPES, {}) + // console.log( + // "generateStaticParams", + // paths.map(({ params }) => params) + // ) + return paths.map((path: string | { params: NodePageParams }) => + typeof path === "string" ? { slug: [] } : path?.params + ) +} + +export default async function NodePage({ + params: { slug }, + searchParams, +}: NodePageProps) { + const isDraftMode = draftMode().isEnabled + + let node + try { + node = await getNode(slug) + } catch (error) { + // If getNode throws an error, tell Next.js the path is 404. + notFound() + } + + // If we're not in draft mode and the resource is not published, return a 404. + if (!isDraftMode && node?.status === false) { + notFound() + } + + return ( + <> + {node.type === "node--page" && } + {node.type === "node--article" &&
} + + ) +} diff --git a/examples/example-router-migration/app/api/disable-draft/route.ts b/examples/example-router-migration/app/api/disable-draft/route.ts new file mode 100644 index 00000000..81900948 --- /dev/null +++ b/examples/example-router-migration/app/api/disable-draft/route.ts @@ -0,0 +1,6 @@ +import { disableDraftMode } from "next-drupal/draft" +import type { NextRequest } from "next/server" + +export async function GET(request: NextRequest) { + return disableDraftMode() +} diff --git a/examples/example-router-migration/app/api/draft/route.ts b/examples/example-router-migration/app/api/draft/route.ts new file mode 100644 index 00000000..b8757e2a --- /dev/null +++ b/examples/example-router-migration/app/api/draft/route.ts @@ -0,0 +1,7 @@ +import { drupal } from "@/lib/drupal" +import { enableDraftMode } from "next-drupal/draft" +import type { NextRequest } from "next/server" + +export async function GET(request: NextRequest): Promise { + return enableDraftMode(request, drupal) +} diff --git a/examples/example-router-migration/app/api/revalidate/route.ts b/examples/example-router-migration/app/api/revalidate/route.ts new file mode 100644 index 00000000..d3722f7b --- /dev/null +++ b/examples/example-router-migration/app/api/revalidate/route.ts @@ -0,0 +1,28 @@ +import { revalidatePath } from "next/cache" +import type { NextRequest } from "next/server" + +async function handler(request: NextRequest) { + const searchParams = request.nextUrl.searchParams + const slug = searchParams.get("slug") + const secret = searchParams.get("secret") + + // Validate secret. + if (secret !== process.env.DRUPAL_REVALIDATE_SECRET) { + return new Response("Invalid secret.", { status: 401 }) + } + + // Validate slug. + if (!slug) { + return new Response("Invalid slug.", { status: 400 }) + } + + try { + revalidatePath(slug) + + return new Response("Revalidated.") + } catch (error) { + return new Response((error as Error).message, { status: 500 }) + } +} + +export { handler as GET, handler as POST } diff --git a/examples/example-router-migration/app/layout.tsx b/examples/example-router-migration/app/layout.tsx new file mode 100644 index 00000000..3b3c9652 --- /dev/null +++ b/examples/example-router-migration/app/layout.tsx @@ -0,0 +1,37 @@ +import { DraftAlert } from "@/components/misc/DraftAlert" +import { HeaderNav } from "@/components/navigation/HeaderNav" +import type { Metadata } from "next" +import type { ReactNode } from "react" + +import "@/styles/globals.css" + +export const metadata: Metadata = { + title: { + default: "Next.js for Drupal", + template: "%s | Next.js for Drupal", + }, + description: "A Next.js site powered by a Drupal backend.", + icons: { + icon: "/favicon.ico", + }, +} + +export default function RootLayout({ + // Layouts must accept a children prop. + // This will be populated with nested layouts or pages + children, +}: { + children: ReactNode +}) { + return ( + + + +
+ +
{children}
+
+ + + ) +} diff --git a/examples/example-router-migration/app/page.tsx b/examples/example-router-migration/app/page.tsx new file mode 100644 index 00000000..a7f1ec4d --- /dev/null +++ b/examples/example-router-migration/app/page.tsx @@ -0,0 +1,51 @@ +import { ArticleTeaser } from "@/components/drupal/ArticleTeaser" +import { Link } from "@/components/navigation/Link" +import { drupal } from "@/lib/drupal" +import type { Metadata } from "next" +import type { DrupalNode } from "next-drupal" + +export const metadata: Metadata = { + description: "A Next.js site powered by a Drupal backend.", +} + +export default async function Home() { + const nodes = await drupal.getResourceCollection( + "node--article", + { + params: { + "filter[status]": 1, + "fields[node--article]": "title,path,field_image,uid,created", + include: "field_image,uid", + sort: "-created", + }, + } + ) + + return ( + <> +

+ Latest Articles. +
+ + Using the App Router + +

+

+ Switch to{" "} + + Pages Router + +

+ {nodes?.length ? ( + nodes.map((node) => ( +
+ +
+
+ )) + ) : ( +

No nodes found

+ )} + + ) +} diff --git a/starters/basic-starter/components/node--article.tsx b/examples/example-router-migration/components/drupal/Article.tsx similarity index 82% rename from starters/basic-starter/components/node--article.tsx rename to examples/example-router-migration/components/drupal/Article.tsx index f13b0200..b4d3d234 100644 --- a/starters/basic-starter/components/node--article.tsx +++ b/examples/example-router-migration/components/drupal/Article.tsx @@ -1,13 +1,12 @@ import Image from "next/image" -import { DrupalNode } from "next-drupal" +import { absoluteUrl, formatDate } from "@/lib/utils" +import type { DrupalNode } from "next-drupal" -import { absoluteUrl, formatDate } from "lib/utils" - -interface NodeArticleProps { +interface ArticleProps { node: DrupalNode } -export function NodeArticle({ node, ...props }: NodeArticleProps) { +export function Article({ node, ...props }: ArticleProps) { return (

{node.title}

@@ -26,7 +25,7 @@ export function NodeArticle({ node, ...props }: NodeArticleProps) { src={absoluteUrl(node.field_image.uri.url)} width={768} height={400} - alt={node.field_image.resourceIdObjMeta.alt} + alt={node.field_image.resourceIdObjMeta.alt || ""} priority /> {node.field_image.resourceIdObjMeta.title && ( diff --git a/examples/example-router-migration/components/drupal/ArticleTeaser.tsx b/examples/example-router-migration/components/drupal/ArticleTeaser.tsx new file mode 100644 index 00000000..8efeac62 --- /dev/null +++ b/examples/example-router-migration/components/drupal/ArticleTeaser.tsx @@ -0,0 +1,54 @@ +import Image from "next/image" +import { Link } from "@/components/navigation/Link" +import { absoluteUrl, formatDate } from "@/lib/utils" +import type { DrupalNode } from "next-drupal" + +interface ArticleTeaserProps { + node: DrupalNode +} + +export function ArticleTeaser({ node, ...props }: ArticleTeaserProps) { + return ( +
+ +

{node.title}

+ +
+ {node.uid?.display_name ? ( + + Posted by{" "} + {node.uid?.display_name} + + ) : null} + - {formatDate(node.created)} +
+ {node.field_image && ( +
+ {node.field_image.resourceIdObjMeta.alt} +
+ )} + + Read article + + + + +
+ ) +} diff --git a/starters/basic-starter/components/node--basic-page.tsx b/examples/example-router-migration/components/drupal/BasicPage.tsx similarity index 71% rename from starters/basic-starter/components/node--basic-page.tsx rename to examples/example-router-migration/components/drupal/BasicPage.tsx index 703d6d64..88d7f00b 100644 --- a/starters/basic-starter/components/node--basic-page.tsx +++ b/examples/example-router-migration/components/drupal/BasicPage.tsx @@ -1,10 +1,10 @@ -import { DrupalNode } from "next-drupal" +import type { DrupalNode } from "next-drupal" -interface NodeBasicPageProps { +interface BasicPageProps { node: DrupalNode } -export function NodeBasicPage({ node, ...props }: NodeBasicPageProps) { +export function BasicPage({ node, ...props }: BasicPageProps) { return (

{node.title}

diff --git a/examples/example-router-migration/components/misc/DraftAlert/Client.tsx b/examples/example-router-migration/components/misc/DraftAlert/Client.tsx new file mode 100644 index 00000000..00932ae4 --- /dev/null +++ b/examples/example-router-migration/components/misc/DraftAlert/Client.tsx @@ -0,0 +1,38 @@ +"use client" + +import { useEffect, useState } from "react" + +export function DraftAlertClient({ + isDraftEnabled, +}: { + isDraftEnabled: boolean +}) { + const [showDraftAlert, setShowDraftAlert] = useState(false) + + useEffect(() => { + setShowDraftAlert(isDraftEnabled && window.top === window.self) + }, [isDraftEnabled]) + + if (!showDraftAlert) { + return null + } + + function buttonHandler() { + void fetch("/api/disable-draft") + setShowDraftAlert(false) + } + + return ( +
+

+ This page is a draft. + +

+
+ ) +} diff --git a/examples/example-router-migration/components/misc/DraftAlert/index.tsx b/examples/example-router-migration/components/misc/DraftAlert/index.tsx new file mode 100644 index 00000000..a07f0d67 --- /dev/null +++ b/examples/example-router-migration/components/misc/DraftAlert/index.tsx @@ -0,0 +1,13 @@ +import { Suspense } from "react" +import { draftMode } from "next/headers" +import { DraftAlertClient } from "./Client" + +export function DraftAlert() { + const isDraftEnabled = draftMode().isEnabled + + return ( + + + + ) +} diff --git a/examples/example-router-migration/components/navigation/HeaderNav.tsx b/examples/example-router-migration/components/navigation/HeaderNav.tsx new file mode 100644 index 00000000..bccb4e4c --- /dev/null +++ b/examples/example-router-migration/components/navigation/HeaderNav.tsx @@ -0,0 +1,21 @@ +import { Link } from "@/components/navigation/Link" + +export function HeaderNav() { + return ( +
+
+ + Next.js for Drupal + + + Read the docs + +
+
+ ) +} diff --git a/examples/example-router-migration/components/navigation/Link.tsx b/examples/example-router-migration/components/navigation/Link.tsx new file mode 100644 index 00000000..23dbc4c0 --- /dev/null +++ b/examples/example-router-migration/components/navigation/Link.tsx @@ -0,0 +1,23 @@ +import { forwardRef } from "react" +import NextLink from "next/link" +import type { AnchorHTMLAttributes, ReactNode } from "react" +import type { LinkProps as NextLinkProps } from "next/link" + +type LinkProps = NextLinkProps & + Omit, keyof NextLinkProps> & { + children?: ReactNode + } + +export const Link = forwardRef( + function LinkWithRef( + { + // Turn next/link prefetching off by default. + // @see https://github.com/vercel/next.js/discussions/24009 + prefetch = false, + ...rest + }, + ref + ) { + return + } +) diff --git a/examples/example-router-migration/components/pages-router/Layout.tsx b/examples/example-router-migration/components/pages-router/Layout.tsx new file mode 100644 index 00000000..16e08744 --- /dev/null +++ b/examples/example-router-migration/components/pages-router/Layout.tsx @@ -0,0 +1,15 @@ +import { HeaderNav } from "@/components/navigation/HeaderNav" +import { PreviewAlert } from "@/components/pages-router/PreviewAlert" +import type { ReactNode } from "react" + +export function Layout({ children }: { children: ReactNode }) { + return ( + <> + +
+ +
{children}
+
+ + ) +} diff --git a/examples/example-router-migration/components/pages-router/PreviewAlert.tsx b/examples/example-router-migration/components/pages-router/PreviewAlert.tsx new file mode 100644 index 00000000..abca6a68 --- /dev/null +++ b/examples/example-router-migration/components/pages-router/PreviewAlert.tsx @@ -0,0 +1,30 @@ +import { useEffect, useState } from "react" +import { useRouter } from "next/router" + +export function PreviewAlert() { + const router = useRouter() + const isPreview = router.isPreview + const [showPreviewAlert, setShowPreviewAlert] = useState(false) + + useEffect(() => { + setShowPreviewAlert(isPreview && window.top === window.self) + }, [isPreview]) + + if (!showPreviewAlert) { + return null + } + + return ( +
+

+ This page is a preview.{" "} + +

+
+ ) +} diff --git a/examples/example-router-migration/lib/drupal.ts b/examples/example-router-migration/lib/drupal.ts new file mode 100644 index 00000000..e390f347 --- /dev/null +++ b/examples/example-router-migration/lib/drupal.ts @@ -0,0 +1,13 @@ +import { DrupalClient } from "next-drupal" + +const baseUrl: string = process.env.NEXT_PUBLIC_DRUPAL_BASE_URL || "" +const clientId = process.env.DRUPAL_CLIENT_ID || "" +const clientSecret = process.env.DRUPAL_CLIENT_SECRET || "" + +export const drupal = new DrupalClient(baseUrl, { + auth: { + clientId, + clientSecret, + }, + debug: true, +}) diff --git a/examples/example-router-migration/lib/utils.ts b/examples/example-router-migration/lib/utils.ts new file mode 100644 index 00000000..d83a0d73 --- /dev/null +++ b/examples/example-router-migration/lib/utils.ts @@ -0,0 +1,12 @@ +export function formatDate(input: string): string { + const date = new Date(input) + return date.toLocaleDateString("en-US", { + month: "long", + day: "numeric", + year: "numeric", + }) +} + +export function absoluteUrl(input: string) { + return `${process.env.NEXT_PUBLIC_DRUPAL_BASE_URL}${input}` +} diff --git a/examples/example-router-migration/next.config.js b/examples/example-router-migration/next.config.js new file mode 100644 index 00000000..0a7fabac --- /dev/null +++ b/examples/example-router-migration/next.config.js @@ -0,0 +1,16 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + images: { + remotePatterns: [ + { + // protocol: 'https', + hostname: process.env.NEXT_IMAGE_DOMAIN, + // port: '', + // pathname: '/sites/default/files/**', + }, + ], + }, +} + +module.exports = nextConfig diff --git a/examples/example-router-migration/package.json b/examples/example-router-migration/package.json new file mode 100644 index 00000000..2783e4c6 --- /dev/null +++ b/examples/example-router-migration/package.json @@ -0,0 +1,34 @@ +{ + "name": "example-router-migration", + "version": "1.8.0", + "private": true, + "license": "MIT", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "preview": "next build && next start", + "lint": "next lint", + "format": "prettier --write .", + "format:check": "prettier --check ." + }, + "dependencies": { + "next": "^14", + "next-drupal": "^2.0.0-alpha.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@tailwindcss/typography": "^0.5.10", + "@types/node": "^20.10.0", + "@types/react": "^18.2.39", + "@types/react-dom": "^18.2.17", + "autoprefixer": "^10.4.16", + "eslint": "^8.54.0", + "eslint-config-next": "^14.0.3", + "postcss": "^8.4.31", + "prettier": "^3.1.0", + "tailwindcss": "^3.3.5", + "typescript": "^5.3.2" + } +} diff --git a/examples/example-router-migration/pages/_app.tsx b/examples/example-router-migration/pages/_app.tsx new file mode 100644 index 00000000..70739e9b --- /dev/null +++ b/examples/example-router-migration/pages/_app.tsx @@ -0,0 +1,6 @@ +import "@/styles/globals.css" +import type { AppProps } from "next/app" + +export default function App({ Component, pageProps }: AppProps) { + return +} diff --git a/examples/example-router-migration/pages/_document.tsx b/examples/example-router-migration/pages/_document.tsx new file mode 100644 index 00000000..097cb7ff --- /dev/null +++ b/examples/example-router-migration/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from "next/document" + +export default function Document() { + return ( + + + +
+ + + + ) +} diff --git a/examples/example-router-migration/pages/api/exit-preview.ts b/examples/example-router-migration/pages/api/exit-preview.ts new file mode 100644 index 00000000..f8847b39 --- /dev/null +++ b/examples/example-router-migration/pages/api/exit-preview.ts @@ -0,0 +1,9 @@ +import { drupal } from "@/lib/drupal" +import type { NextApiRequest, NextApiResponse } from "next" + +export default async function exit( + request: NextApiRequest, + response: NextApiResponse +) { + await drupal.previewDisable(request, response) +} diff --git a/examples/example-router-migration/pages/api/preview-only.ts b/examples/example-router-migration/pages/api/preview-only.ts new file mode 100644 index 00000000..26c04ffc --- /dev/null +++ b/examples/example-router-migration/pages/api/preview-only.ts @@ -0,0 +1,9 @@ +import { drupal } from "@/lib/drupal" +import type { NextApiRequest, NextApiResponse } from "next" + +export default async function preview( + request: NextApiRequest, + response: NextApiResponse +) { + await drupal.preview(request, response) +} diff --git a/examples/example-router-migration/pages/api/preview.ts b/examples/example-router-migration/pages/api/preview.ts new file mode 100644 index 00000000..a0733440 --- /dev/null +++ b/examples/example-router-migration/pages/api/preview.ts @@ -0,0 +1,10 @@ +import { drupal } from "@/lib/drupal" +import type { NextApiRequest, NextApiResponse } from "next" + +export default async function draft( + request: NextApiRequest, + response: NextApiResponse +) { + // Enables Preview mode and Draft mode. + await drupal.preview(request, response, { enable: true }) +} diff --git a/examples/example-router-migration/pages/pages-router/[...slug].tsx b/examples/example-router-migration/pages/pages-router/[...slug].tsx new file mode 100644 index 00000000..02ad87be --- /dev/null +++ b/examples/example-router-migration/pages/pages-router/[...slug].tsx @@ -0,0 +1,92 @@ +import Head from "next/head" +import { Article } from "@/components/drupal/Article" +import { BasicPage } from "@/components/drupal/BasicPage" +import { Layout } from "@/components/pages-router/Layout" +import { drupal } from "@/lib/drupal" +import type { + GetStaticPaths, + GetStaticProps, + InferGetStaticPropsType, +} from "next" +import type { DrupalNode } from "next-drupal" + +const RESOURCE_TYPES = ["node--page", "node--article"] + +export const getStaticPaths = (async (context) => { + return { + paths: await drupal.getStaticPathsFromContext(RESOURCE_TYPES, context), + fallback: "blocking", + } +}) satisfies GetStaticPaths + +export const getStaticProps = (async (context) => { + const path = await drupal.translatePathFromContext(context) + + if (!path) { + return { + notFound: true, + } + } + + const type = path?.jsonapi?.resourceName + + let params = {} + if (type === "node--article") { + params = { + include: "field_image,uid", + } + } + + const resource = await drupal.getResourceFromContext( + path, + context, + { + params, + } + ) + + // At this point, we know the path exists and it points to a resource. + // If we receive an error, it means something went wrong on Drupal. + // We throw an error to tell revalidation to skip this for now. + // Revalidation can try again on next request. + if (!resource) { + throw new Error(`Failed to fetch resource: ${path?.jsonapi?.individual}`) + } + + // If we're not in preview mode and the resource is not published, + // Return page not found. + if (!context.preview && resource?.status === false) { + return { + notFound: true, + } + } + + return { + props: { + resource, + }, + } +}) satisfies GetStaticProps<{ + resource: DrupalNode +}> + +export default function NodePage({ + resource, +}: InferGetStaticPropsType) { + if (!resource) return null + + return ( + + + {resource.title} + + + {resource.type === "node--page" && } + {resource.type === "node--article" &&
} + + ) +} diff --git a/examples/example-router-migration/pages/pages-router/index.tsx b/examples/example-router-migration/pages/pages-router/index.tsx new file mode 100644 index 00000000..5015df32 --- /dev/null +++ b/examples/example-router-migration/pages/pages-router/index.tsx @@ -0,0 +1,78 @@ +import Head from "next/head" +import { ArticleTeaser } from "@/components/drupal/ArticleTeaser" +import { Link } from "@/components/navigation/Link" +import { Layout } from "@/components/pages-router/Layout" +import { drupal } from "@/lib/drupal" +import type { InferGetStaticPropsType, GetStaticProps } from "next" +import type { DrupalNode } from "next-drupal" + +export const getStaticProps = (async (context) => { + const nodes = await drupal.getResourceCollectionFromContext( + "node--article", + context, + { + params: { + "filter[status]": 1, + "fields[node--article]": "title,path,field_image,uid,created", + include: "field_image,uid", + sort: "-created", + }, + } + ) + + return { + props: { + nodes, + }, + } +}) satisfies GetStaticProps<{ + nodes: DrupalNode[] +}> + +export default function Home({ + nodes, +}: InferGetStaticPropsType) { + return ( + + + Next.js for Drupal + + +

+ Latest Articles. +
+ + Using the Pages Router + +

+

+ Switch to{" "} + + App Router + +

+ {nodes?.length ? ( + nodes.map((node) => ( +
+ +
+
+ )) + ) : ( +

No nodes found

+ )} +
+ ) +} diff --git a/examples/example-router-migration/postcss.config.js b/examples/example-router-migration/postcss.config.js new file mode 100644 index 00000000..3fa0a951 --- /dev/null +++ b/examples/example-router-migration/postcss.config.js @@ -0,0 +1,8 @@ +// If you want to use other PostCSS plugins, see the following: +// https://tailwindcss.com/docs/using-with-preprocessors +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/examples/example-router-migration/public/favicon.ico b/examples/example-router-migration/public/favicon.ico new file mode 100644 index 00000000..ea2f437d Binary files /dev/null and b/examples/example-router-migration/public/favicon.ico differ diff --git a/examples/example-router-migration/public/robots.txt b/examples/example-router-migration/public/robots.txt new file mode 100644 index 00000000..14267e90 --- /dev/null +++ b/examples/example-router-migration/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / \ No newline at end of file diff --git a/examples/example-router-migration/styles/globals.css b/examples/example-router-migration/styles/globals.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/examples/example-router-migration/styles/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/examples/example-router-migration/tailwind.config.ts b/examples/example-router-migration/tailwind.config.ts new file mode 100644 index 00000000..c7f5c8a1 --- /dev/null +++ b/examples/example-router-migration/tailwind.config.ts @@ -0,0 +1,18 @@ +import type { Config } from "tailwindcss" + +const config: Config = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: {}, + }, + variants: { + extend: {}, + }, + plugins: [require("@tailwindcss/typography")], +} + +export default config diff --git a/examples/example-router-migration/tsconfig.json b/examples/example-router-migration/tsconfig.json new file mode 100644 index 00000000..23ba4fd5 --- /dev/null +++ b/examples/example-router-migration/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/examples/example-search-api/.gitignore b/examples/example-search-api/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-search-api/.gitignore +++ b/examples/example-search-api/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-search-api/cypress/support/index.js b/examples/example-search-api/cypress/support/index.js index d68db96d..a80764cb 100644 --- a/examples/example-search-api/cypress/support/index.js +++ b/examples/example-search-api/cypress/support/index.js @@ -14,7 +14,7 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import "./commands" // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/examples/example-search-api/package.json b/examples/example-search-api/package.json index c6dc37d1..af5c35dd 100644 --- a/examples/example-search-api/package.json +++ b/examples/example-search-api/package.json @@ -14,7 +14,7 @@ "test:e2e:ci": "start-server-and-test 'yarn preview' http://localhost:3838 cy:run" }, "dependencies": { - "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.1", "@tanstack/react-query": "^4.20.4", "next": "^12.2.3", @@ -30,6 +30,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-search-api/pages/advanced.tsx b/examples/example-search-api/pages/advanced.tsx index c8424837..a939ad6d 100644 --- a/examples/example-search-api/pages/advanced.tsx +++ b/examples/example-search-api/pages/advanced.tsx @@ -6,7 +6,7 @@ import { DrupalNode, getSearchIndexFromContext, deserialize, - JsonApiSearchApiResponse, + DrupalSearchApiJsonApiResponse, DrupalSearchApiFacet, } from "next-drupal" import { GetStaticPropsResult } from "next" @@ -209,14 +209,15 @@ export default function AdvancedPage({ export async function getStaticProps( context ): Promise> { - const results = await getSearchIndexFromContext( - "property", - context, - { - deserialize: false, - params, - } - ) + const results = + await getSearchIndexFromContext( + "property", + context, + { + deserialize: false, + params, + } + ) return { props: { diff --git a/examples/example-umami/.gitignore b/examples/example-umami/.gitignore index 78adc9ed..6686735a 100644 --- a/examples/example-umami/.gitignore +++ b/examples/example-umami/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,15 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-umami/components/meta.tsx b/examples/example-umami/components/meta.tsx index e472acfd..10d569c3 100644 --- a/examples/example-umami/components/meta.tsx +++ b/examples/example-umami/components/meta.tsx @@ -16,19 +16,19 @@ export function Meta({ title, description }: MetaProps) { return ( - - {`${title} | ${siteConfig.name}`} - - + {`${title} | ${siteConfig.name}`} + - - + + ) } diff --git a/examples/example-umami/package.json b/examples/example-umami/package.json index 803c8fbb..d5b34b5c 100644 --- a/examples/example-umami/package.json +++ b/examples/example-umami/package.json @@ -43,6 +43,6 @@ "eslint-config-next": "^12.1.4", "postcss": "^8.4.12", "tailwindcss": "^3.0.23", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/examples/example-umami/pages/_app.tsx b/examples/example-umami/pages/_app.tsx index ffa46eb3..797160bd 100644 --- a/examples/example-umami/pages/_app.tsx +++ b/examples/example-umami/pages/_app.tsx @@ -1,7 +1,11 @@ import * as React from "react" import Router from "next/router" import { SessionProvider } from "next-auth/react" -import { QueryClient, QueryClientProvider, Hydrate } from "@tanstack/react-query" +import { + QueryClient, + QueryClientProvider, + Hydrate, +} from "@tanstack/react-query" import { appWithTranslation } from "next-i18next" import NProgress from "nprogress" import "nprogress/nprogress.css" diff --git a/examples/example-webform/.gitignore b/examples/example-webform/.gitignore index 3aa970bb..6686735a 100644 --- a/examples/example-webform/.gitignore +++ b/examples/example-webform/.gitignore @@ -4,14 +4,17 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ /out/ -.next # production /build @@ -24,18 +27,13 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* - -cypress/screenshots -cypress/videos \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/example-webform/cypress/support/index.js b/examples/example-webform/cypress/support/index.js index d68db96d..a80764cb 100644 --- a/examples/example-webform/cypress/support/index.js +++ b/examples/example-webform/cypress/support/index.js @@ -14,7 +14,7 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import "./commands" // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/examples/example-webform/package.json b/examples/example-webform/package.json index 7ca374b6..6522a24b 100644 --- a/examples/example-webform/package.json +++ b/examples/example-webform/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@hookform/resolvers": "^2.8.3", - "@tailwindcss/forms": "^0.4.0", + "@tailwindcss/forms": "^0.5.6", "@tailwindcss/typography": "^0.5.1", "next": "^12.2.3", "next-drupal": "^1.6.0", @@ -32,6 +32,6 @@ "eslint-config-next": "^12.0.10", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 3ab4fbfb..00000000 --- a/jest.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Config } from "@jest/types" - -const config: Config.InitialOptions = { - preset: "ts-jest/presets/js-with-ts", - testEnvironment: "node", - setupFiles: ["dotenv/config"], - setupFilesAfterEnv: ["/jest.setup.ts"], - testMatch: ["**/tests/**/*.test.{ts,tsx}"], - testPathIgnorePatterns: [ - "/node_modules/", - "/fixtures/", - "/dist/", - "/.cache/", - "/drupal/", - ], - globals: { - "ts-jest": { - isolatedModules: true, - }, - }, -} - -export default config diff --git a/lerna.json b/lerna.json index 7d2586c4..4db5e70d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,16 +1,9 @@ { + "$schema": "node_modules/lerna/schemas/lerna-schema.json", "version": "independent", - "packages": ["packages/*", "examples/*", "modules/*"], "npmClient": "yarn", - "useWorkspaces": true, - "loglevel": "success", - "registry": "https://registry.npmjs.org/", - "ignoreChanges": [ - "CHANGELOG.md", - "**/__tests__/**", - "**/__mocks__/**", - "drupal/**" - ], + "packages": ["packages/next-drupal"], + "ignoreChanges": ["CHANGELOG.md", "**/__tests__/**", "**/__mocks__/**"], "command": { "create": { "license": "MIT" diff --git a/modules/next/.gitlab-ci.yml b/modules/next/.gitlab-ci.yml new file mode 100644 index 00000000..68f90528 --- /dev/null +++ b/modules/next/.gitlab-ci.yml @@ -0,0 +1,102 @@ +################ +# DrupalCI GitLabCI template +# +# Gitlab-ci.yml to replicate DrupalCI testing for Contrib +# +# With thanks to: +# * The GitLab Acceleration Initiative participants +# * DrupalSpoons +################ + +################ +# Guidelines +# +# This template is designed to give any Contrib maintainer everything they need to test, without requiring modification. It is also designed to keep up to date with Core Development automatically through the use of include files that can be centrally maintained. +# +# However, you can modify this template if you have additional needs for your project. +################ + +################ +# Includes +# +# Additional configuration can be provided through includes. +# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include. +# +# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml +# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values +################ + +include: + ################ + # DrupalCI includes: + # As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically. + # View these include files at https://git.drupalcode.org/project/gitlab_templates/ + ################ + - project: $_GITLAB_TEMPLATES_REPO + # "ref" value can be: + # - Recommended (default) - `ref: $_GITLAB_TEMPLATES_REF` - The Drupal Association will update this value to the recommended tag for contrib. + # - Latest - `ref: main` - Get the latest additions and bug fixes as they are merged into the templates. + # - Minor or Major latests - `ref: 1.x-latest` or `ref: 1.0.x-latest` - Get the latest additions within a minor (mostly bugfixes) or major (bugs and new features). + # - Fixed tag - `ref: 1.0.1` - Set the value to a known tag. This will not get any updates. + ref: $_GITLAB_TEMPLATES_REF + file: + - '/includes/include.drupalci.main.yml' + # EXPERIMENTAL: For Drupal 7, remove the above line and uncomment the below. + # - '/includes/include.drupalci.main-d7.yml' + - '/includes/include.drupalci.variables.yml' + - '/includes/include.drupalci.workflows.yml' +################ +# Pipeline configuration variables +# +# These are the variables provided to the Run Pipeline form that a user may want to override. +# +# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/1.0.x/includes/include.drupalci.variables.yml +################ +# variables: +# SKIP_ESLINT: '1' + +################################################################################### +# +# * +# /( +# ((((, +# /((((((( +# ((((((((((* +# ,((((((((((((((( +# ,((((((((((((((((((( +# ((((((((((((((((((((((((* +# *((((((((((((((((((((((((((((( +# ((((((((((((((((((((((((((((((((((* +# *(((((((((((((((((( .(((((((((((((((((( +# ((((((((((((((((((. /(((((((((((((((((* +# /((((((((((((((((( .(((((((((((((((((, +# ,(((((((((((((((((( (((((((((((((((((( +# .(((((((((((((((((((( .((((((((((((((((( +# ((((((((((((((((((((((( ((((((((((((((((/ +# (((((((((((((((((((((((((((/ ,(((((((((((((((* +# .((((((((((((((/ /(((((((((((((. ,((((((((((((((( +# *(((((((((((((( ,(((((((((((((/ *((((((((((((((. +# ((((((((((((((, /(((((((((((((. ((((((((((((((, +# (((((((((((((/ ,(((((((((((((* ,(((((((((((((, +# *((((((((((((( .((((((((((((((( ,((((((((((((( +# ((((((((((((/ /((((((((((((((((((. ,((((((((((((/ +# ((((((((((((( *(((((((((((((((((((((((* *(((((((((((( +# ((((((((((((( ,(((((((((((((..((((((((((((( *(((((((((((( +# ((((((((((((, /((((((((((((* /((((((((((((/ (((((((((((( +# ((((((((((((( /((((((((((((/ (((((((((((((* (((((((((((( +# (((((((((((((/ /(((((((((((( ,((((((((((((, *(((((((((((( +# (((((((((((((( *(((((((((((/ *((((((((((((. ((((((((((((/ +# *((((((((((((((((((((((((((, /((((((((((((((((((((((((( +# ((((((((((((((((((((((((( ((((((((((((((((((((((((, +# .(((((((((((((((((((((((/ ,((((((((((((((((((((((( +# ((((((((((((((((((((((/ ,(((((((((((((((((((((/ +# *((((((((((((((((((((( (((((((((((((((((((((, +# ,(((((((((((((((((((((, ((((((((((((((((((((/ +# ,(((((((((((((((((((((* /(((((((((((((((((((( +# ((((((((((((((((((((((, ,/((((((((((((((((((((, +# ,((((((((((((((((((((((((((((((((((((((((((((((((((( +# .((((((((((((((((((((((((((((((((((((((((((((( +# .((((((((((((((((((((((((((((((((((((,. +# .,(((((((((((((((((((((((((. +# +################################################################################### diff --git a/modules/next/composer.json b/modules/next/composer.json index 05f49ac4..48cea01e 100644 --- a/modules/next/composer.json +++ b/modules/next/composer.json @@ -1,6 +1,6 @@ { "name": "drupal/next", - "description": "Next.js + Drupal for Incremental Static Regeneration and Preview mode.", + "description": "Next.js + Drupal for Incremental Static Regeneration and Draft mode.", "type": "drupal-module", "homepage": "http://drupal.org/project/next", "license": "GPL-2.0-or-later", diff --git a/modules/next/config/schema/next.schema.yml b/modules/next/config/schema/next.schema.yml index 943c9288..bde59648 100644 --- a/modules/next/config/schema/next.schema.yml +++ b/modules/next/config/schema/next.schema.yml @@ -1,45 +1,44 @@ next.next_site.*: type: config_entity - label: "Next.js site" + label: 'Next.js site' mapping: id: type: string - label: "ID" + label: 'ID' label: type: label - label: "Label" + label: 'Label' base_url: type: string - label: "Base URL" + label: 'Base URL' preview_url: type: string - label: "Preview URL" + label: 'Preview URL' preview_secret: type: string - label: "Preview secret" + label: 'Preview secret' revalidate_url: type: string - label: "Revalidate URL" + label: 'Revalidate URL' revalidate_secret: type: string - label: "Revalidate secret" - + label: 'Revalidate secret' next.next_entity_type_config.*: type: config_entity - label: "Next.js entity type config" + label: 'Next.js entity type config' mapping: id: type: string - label: "ID" + label: 'ID' site_resolver: type: string - label: "Site resolver" + label: 'Site resolver' configuration: type: next.site_resolver.configuration.[%parent.site_resolver] revalidator: type: string - label: "Revalidator" + label: 'Revalidator' revalidator_configuration: type: next.revalidator.configuration.[%parent.revalidator] @@ -48,17 +47,17 @@ next.site_resolver.configuration.site_selector: mapping: sites: type: sequence - label: "Next.js sites" + label: 'Next.js sites' sequence: type: string - label: "Site" + label: 'Site' next.site_resolver.configuration.entity_reference_field: type: mapping mapping: field_name: type: string - label: "Field name" + label: 'Field name' next.revalidator.configuration.*: type: mapping @@ -69,23 +68,23 @@ next.revalidator.configuration.path: mapping: revalidate_page: type: boolean - label: "Revalidate page" + label: 'Revalidate page' additional_paths: type: string - label: "Additional paths" + label: 'Additional paths' next.settings: type: config_object - label: "Next settings" + label: 'Next settings' mapping: site_previewer: type: string - label: "Site previewer" + label: 'Site previewer' site_previewer_configuration: type: next.site_previewer.configuration.[%parent.site_previewer] preview_url_generator: type: string - label: "Preview URL generator" + label: 'Preview URL generator' preview_url_generator_configuration: type: next.preview_url_generator.configuration.[%parent.preview_url_generator] debug: @@ -96,17 +95,17 @@ next.site_previewer.configuration.iframe: mapping: width: type: string - label: "Width" + label: 'Width' sync_route: type: boolean - label: "Sync route" + label: 'Sync route' sync_route_skip_routes: type: string - label: "Sync route skip pages" + label: 'Sync route skip pages' next.preview_url_generator.configuration.simple_oauth: type: mapping mapping: secret_expiration: type: integer - label: "Secret expiration" + label: 'Secret expiration' diff --git a/modules/next/js/next.site_preview.iframe.js b/modules/next/js/next.site_preview.iframe.js index b4849c09..545377d5 100644 --- a/modules/next/js/next.site_preview.iframe.js +++ b/modules/next/js/next.site_preview.iframe.js @@ -3,41 +3,45 @@ * Site preview. */ -(function($, window, Drupal, drupalSettings) { - +(function ($, window, Drupal, drupalSettings) { Drupal.behaviors.iframePreviewLoader = { attach(context) { - const $iframe = $('iframe.next-site-preview-iframe', context) + const $iframe = $('iframe.next-site-preview-iframe', context); $iframe.on('load', () => { $iframe.addClass('ready'); - }) - } - } + }); + }, + }; Drupal.behaviors.iframePreviewSyncRoute = { attach() { - const { sync_route = false, skip_routes } = drupalSettings.next.iframe_preview + const { sync_route = false, skip_routes } = + drupalSettings.next.iframe_preview; if (!sync_route) { return; } - window.addEventListener("message", (event) => { - const { data } = event - - if (data.type !== 'NEXT_DRUPAL_ROUTE_SYNC' || !data.path) { - return; - } - - if (skip_routes?.includes(data.path)) { - return; - } - - if (window.location.pathname !== data.path) { - window.location.href = data.path - } - }, false); - } - } + window.addEventListener( + 'message', + (event) => { + const { data } = event; + + if (data.type !== 'NEXT_DRUPAL_ROUTE_SYNC' || !data.path) { + return; + } + + if (skip_routes?.includes(data.path)) { + return; + } + + if (window.location.pathname !== data.path) { + window.location.href = data.path; + } + }, + false, + ); + }, + }; })(jQuery, window, Drupal, drupalSettings); diff --git a/modules/next/modules/next_extras/config/schema/next_extras.schema.yml b/modules/next/modules/next_extras/config/schema/next_extras.schema.yml index 33a8b137..eb8e5d60 100644 --- a/modules/next/modules/next_extras/config/schema/next_extras.schema.yml +++ b/modules/next/modules/next_extras/config/schema/next_extras.schema.yml @@ -1,10 +1,10 @@ next.next_entity_type_config.*.third_party.next_extras: type: mapping - label: "Revalidate" + label: 'Revalidate' mapping: revalidate: type: boolean - label: "Revalidate" + label: 'Revalidate' revalidate_paths: type: string - label: "Revalidate paths" + label: 'Revalidate paths' diff --git a/modules/next/modules/next_extras/next_extras.services.yml b/modules/next/modules/next_extras/next_extras.services.yml index ef3e94b2..5e7b53e1 100644 --- a/modules/next/modules/next_extras/next_extras.services.yml +++ b/modules/next/modules/next_extras/next_extras.services.yml @@ -1,7 +1,12 @@ services: next_extras.cache_invalidator: class: Drupal\next_extras\NextCacheInvalidator - arguments: ['@next.entity_type.manager', '@http_client', '@logger.channel.next_extras'] + arguments: + [ + '@next.entity_type.manager', + '@http_client', + '@logger.channel.next_extras', + ] logger.channel.next_extras: parent: logger.channel_base - arguments: [ 'next_extras' ] + arguments: ['next_extras'] diff --git a/modules/next/modules/next_graphql/next_graphql.info.yml b/modules/next/modules/next_graphql/next_graphql.info.yml index 4b01ecaa..12105a81 100644 --- a/modules/next/modules/next_graphql/next_graphql.info.yml +++ b/modules/next/modules/next_graphql/next_graphql.info.yml @@ -1,6 +1,6 @@ -name: "Next.js GraphQL" +name: 'Next.js GraphQL' type: module -description: "GraphQL for Next.js" +description: 'GraphQL for Next.js' core_version_requirement: ^9 || ^10 package: Web services dependencies: diff --git a/modules/next/modules/next_jsonapi/next_jsonapi.info.yml b/modules/next/modules/next_jsonapi/next_jsonapi.info.yml index de157544..da67d7e1 100644 --- a/modules/next/modules/next_jsonapi/next_jsonapi.info.yml +++ b/modules/next/modules/next_jsonapi/next_jsonapi.info.yml @@ -1,6 +1,6 @@ -name: "Next.js JSON:API" +name: 'Next.js JSON:API' type: module -description: "JSON:API Helpers for Next.js" +description: 'JSON:API Helpers for Next.js' core_version_requirement: ^9 || ^10 package: Web services dependencies: diff --git a/modules/next/modules/next_jsonapi/next_jsonapi.services.yml b/modules/next/modules/next_jsonapi/next_jsonapi.services.yml index c19779a1..1286297d 100644 --- a/modules/next/modules/next_jsonapi/next_jsonapi.services.yml +++ b/modules/next/modules/next_jsonapi/next_jsonapi.services.yml @@ -5,15 +5,15 @@ services: jsonapi.entity_resource: class: Drupal\next_jsonapi\Controller\EntityResource arguments: - - "@entity_type.manager" - - "@entity_field.manager" - - "@jsonapi.resource_type.repository" - - "@renderer" - - "@entity.repository" - - "@jsonapi.include_resolver" - - "@jsonapi.entity_access_checker" - - "@jsonapi.field_resolver" - - "@jsonapi.serializer" - - "@datetime.time" - - "@current_user" - - "%next_jsonapi.size_max%" + - '@entity_type.manager' + - '@entity_field.manager' + - '@jsonapi.resource_type.repository' + - '@renderer' + - '@entity.repository' + - '@jsonapi.include_resolver' + - '@jsonapi.entity_access_checker' + - '@jsonapi.field_resolver' + - '@jsonapi.serializer' + - '@datetime.time' + - '@current_user' + - '%next_jsonapi.size_max%' diff --git a/modules/next/modules/next_jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php b/modules/next/modules/next_jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php index dd0a9b96..71836cfd 100644 --- a/modules/next/modules/next_jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php +++ b/modules/next/modules/next_jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php @@ -24,15 +24,16 @@ class EntityResourceTest extends KernelTestBase { * {@inheritdoc} */ protected static $modules = [ + 'field', + 'file', 'filter', + 'jsonapi', 'next', 'node', - 'field', - 'system', - 'user', - 'jsonapi', 'path', 'serialization', + 'system', + 'user', ]; /** diff --git a/modules/next/modules/next_jwt/config/schema/next_jwt.schema.yml b/modules/next/modules/next_jwt/config/schema/next_jwt.schema.yml index c2d4f773..869f61cd 100644 --- a/modules/next/modules/next_jwt/config/schema/next_jwt.schema.yml +++ b/modules/next/modules/next_jwt/config/schema/next_jwt.schema.yml @@ -3,7 +3,7 @@ next.preview_url_generator.configuration.jwt: mapping: secret_expiration: type: integer - label: "Secret expiration" + label: 'Secret expiration' access_token_expiration: type: integer - label: "Access token expiration" + label: 'Access token expiration' diff --git a/modules/next/modules/next_jwt/next_jwt.info.yml b/modules/next/modules/next_jwt/next_jwt.info.yml index 91625ff9..0943b180 100644 --- a/modules/next/modules/next_jwt/next_jwt.info.yml +++ b/modules/next/modules/next_jwt/next_jwt.info.yml @@ -1,6 +1,6 @@ name: Next.js JWT (Experimental) type: module -description: "Generates preview URLs using JSON Web Token" +description: 'Generates preview URLs using JSON Web Token' core_version_requirement: ^9 || ^10 package: Web services dependencies: diff --git a/modules/next/modules/next_jwt/next_jwt.services.yml b/modules/next/modules/next_jwt/next_jwt.services.yml index 5a6fb71e..3bb71925 100644 --- a/modules/next/modules/next_jwt/next_jwt.services.yml +++ b/modules/next/modules/next_jwt/next_jwt.services.yml @@ -1,7 +1,7 @@ services: next_jwt.jwt_subscriber: class: Drupal\next_jwt\EventSubscriber\JwtEventSubscriber - arguments: [ '@current_user', '@next.settings.manager' ] + arguments: ['@current_user', '@next.settings.manager'] tags: - { name: event_subscriber } next_jwt.route_subscriber: diff --git a/modules/next/modules/next_jwt/src/Plugin/Next/PreviewUrlGenerator/Jwt.php b/modules/next/modules/next_jwt/src/Plugin/Next/PreviewUrlGenerator/Jwt.php index c5676e21..f09b2f59 100644 --- a/modules/next/modules/next_jwt/src/Plugin/Next/PreviewUrlGenerator/Jwt.php +++ b/modules/next/modules/next_jwt/src/Plugin/Next/PreviewUrlGenerator/Jwt.php @@ -103,8 +103,8 @@ public function defaultConfiguration() { */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form['secret_expiration'] = [ - '#title' => $this->t('Preview secret expiration time'), - '#description' => $this->t('The value, in seconds, to be used as expiration time for the preview secret. It is recommended to use short-lived secrets for increased security.'), + '#title' => $this->t('Secret expiration time'), + '#description' => $this->t('The value, in seconds, to be used as expiration time for the validation secret. It is recommended to use short-lived secrets for increased security.'), '#type' => 'number', '#required' => TRUE, '#default_value' => $this->configuration['secret_expiration'], diff --git a/modules/next/next.info.yml b/modules/next/next.info.yml index de7eaf0a..42872eb2 100644 --- a/modules/next/next.info.yml +++ b/modules/next/next.info.yml @@ -1,5 +1,5 @@ name: Next.js -description: Next.js + Drupal for Incremental Static Regeneration and Preview mode. +description: Next.js + Drupal for Incremental Static Regeneration and Draft mode. type: module core_version_requirement: ^9 || ^10 package: Web services diff --git a/modules/next/next.links.action.yml b/modules/next/next.links.action.yml index 2f3390a7..895dba78 100644 --- a/modules/next/next.links.action.yml +++ b/modules/next/next.links.action.yml @@ -1,10 +1,10 @@ entity.next_site.add_form: route_name: entity.next_site.add_form - title: "Add Next.js site" + title: 'Add Next.js site' appears_on: - entity.next_site.collection entity.next_entity_type_config.add_form: route_name: entity.next_entity_type_config.add_form - title: "Configure entity type" + title: 'Configure entity type' appears_on: - entity.next_entity_type_config.collection diff --git a/modules/next/next.links.menu.yml b/modules/next/next.links.menu.yml index 44e2ccb9..79f7c7c9 100644 --- a/modules/next/next.links.menu.yml +++ b/modules/next/next.links.menu.yml @@ -1,26 +1,26 @@ next.next_site.collection: - title: "Next.js" - description: "Configure Next.js sites and entity types preview." + title: 'Next.js' + description: 'Configure Next.js sites and entity types preview.' parent: system.admin_config_services route_name: entity.next_site.collection next.next_site.collection.sites: - title: "Sites" - description: "Administer Next.js sites" + title: 'Sites' + description: 'Administer Next.js sites' parent: next.next_site.collection route_name: entity.next_site.collection weight: 0 next.next_entity_type_config.collection: - title: "Entity Types" - description: "Configure entity types for Next.js sites" + title: 'Entity Types' + description: 'Configure entity types for Next.js sites' parent: next.next_site.collection route_name: entity.next_entity_type_config.collection weight: 10 next.settings: - title: "Settings" - description: "Configure Next.js" + title: 'Settings' + description: 'Configure Next.js' parent: next.next_site.collection route_name: next.settings weight: 20 diff --git a/modules/next/next.links.task.yml b/modules/next/next.links.task.yml index 16545c5a..c5b7ab1e 100644 --- a/modules/next/next.links.task.yml +++ b/modules/next/next.links.task.yml @@ -1,20 +1,20 @@ next.next_site.collection: - title: "Sites" - description: "Administer Next.js sites" + title: 'Sites' + description: 'Administer Next.js sites' route_name: entity.next_site.collection base_route: next.settings weight: 0 next.next_entity_type_config.collection: - title: "Entity Types" - description: "Configure entity types for Next.js sites" + title: 'Entity Types' + description: 'Configure entity types for Next.js sites' route_name: entity.next_entity_type_config.collection base_route: next.settings weight: 10 next.settings: - title: "Settings" - description: "Configure Next.js" + title: 'Settings' + description: 'Configure Next.js' route_name: next.settings base_route: next.settings weight: 20 diff --git a/modules/next/next.module b/modules/next/next.module index 2b85123b..815cb70d 100644 --- a/modules/next/next.module +++ b/modules/next/next.module @@ -69,7 +69,7 @@ function next_next_site_preview_alter(array &$preview, array $context) { */ function next_entity_insert(EntityInterface $entity) { $event = EntityActionEvent::createFromEntity($entity, EntityActionEventInterface::INSERT_ACTION); - drupal_register_shutdown_function('_next_dispatch_entity_action_event', $event); + \Drupal::service('next.entity_action_event_dispatcher')->addEvent($event); } /** @@ -77,7 +77,7 @@ function next_entity_insert(EntityInterface $entity) { */ function next_entity_update(EntityInterface $entity) { $event = EntityActionEvent::createFromEntity($entity, EntityActionEventInterface::UPDATE_ACTION); - drupal_register_shutdown_function('_next_dispatch_entity_action_event', $event); + \Drupal::service('next.entity_action_event_dispatcher')->addEvent($event); } /** @@ -85,15 +85,5 @@ function next_entity_update(EntityInterface $entity) { */ function next_entity_predelete(EntityInterface $entity) { $event = EntityActionEvent::createFromEntity($entity, EntityActionEventInterface::DELETE_ACTION); - drupal_register_shutdown_function('_next_dispatch_entity_action_event', $event); -} - -/** - * Helper to dispatch an entity action event. - * - * @param \Drupal\next\Event\EntityActionEventInterface $event - * The entity action event. - */ -function _next_dispatch_entity_action_event(EntityActionEventInterface $event) { - \Drupal::service('event_dispatcher')->dispatch($event, EntityEvents::ENTITY_ACTION); + \Drupal::service('next.entity_action_event_dispatcher')->addEvent($event); } diff --git a/modules/next/next.post_update.php b/modules/next/next.post_update.php new file mode 100644 index 00000000..b9fe007f --- /dev/null +++ b/modules/next/next.post_update.php @@ -0,0 +1,15 @@ +getPreviewSecret()) { $variables += [ - 'preview_variables' => '# Required for Preview Mode', + 'preview_variables' => '# Required for Draft Mode', 'DRUPAL_PREVIEW_SECRET' => $secret, ]; } diff --git a/modules/next/src/EventSubscriber/EntityActionEventDispatcher.php b/modules/next/src/EventSubscriber/EntityActionEventDispatcher.php new file mode 100644 index 00000000..ee043a66 --- /dev/null +++ b/modules/next/src/EventSubscriber/EntityActionEventDispatcher.php @@ -0,0 +1,49 @@ +events[] = $event; + } + + /** + * {@inheritdoc} + */ + public function destruct() { + foreach ($this->events as $event) { + $this->eventDispatcher->dispatch($event, EntityEvents::ENTITY_ACTION); + } + } + +} diff --git a/modules/next/src/EventSubscriber/EntityActionEventSubscriberBase.php b/modules/next/src/EventSubscriber/EntityActionEventSubscriberBase.php index b3737297..0bd0a607 100644 --- a/modules/next/src/EventSubscriber/EntityActionEventSubscriberBase.php +++ b/modules/next/src/EventSubscriber/EntityActionEventSubscriberBase.php @@ -2,9 +2,9 @@ namespace Drupal\next\EventSubscriber; -use Drupal\Core\Logger\LoggerChannelInterface; use Drupal\next\NextEntityTypeManagerInterface; use Drupal\next\NextSettingsManagerInterface; +use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; @@ -30,9 +30,9 @@ abstract class EntityActionEventSubscriberBase implements EventSubscriberInterfa /** * The logger channel. * - * @var \Drupal\Core\Logger\LoggerChannelInterface + * @var \Psr\Log\LoggerInterface */ - protected LoggerChannelInterface $logger; + protected LoggerInterface $logger; /** * The event dispatcher. @@ -48,12 +48,12 @@ abstract class EntityActionEventSubscriberBase implements EventSubscriberInterfa * The next entity type manager. * @param \Drupal\next\NextSettingsManagerInterface $next_settings_manager * The next settings manager. - * @param \Drupal\Core\Logger\LoggerChannelInterface $logger + * @param \Psr\Log\LoggerInterface $logger * The logger channel. * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher * The event dispatcher. */ - public function __construct(NextEntityTypeManagerInterface $next_entity_type_manager, NextSettingsManagerInterface $next_settings_manager, LoggerChannelInterface $logger, EventDispatcherInterface $event_dispatcher) { + public function __construct(NextEntityTypeManagerInterface $next_entity_type_manager, NextSettingsManagerInterface $next_settings_manager, LoggerInterface $logger, EventDispatcherInterface $event_dispatcher) { $this->nextEntityTypeManager = $next_entity_type_manager; $this->nextSettingsManager = $next_settings_manager; $this->logger = $logger; diff --git a/modules/next/src/Form/NextEntityTypeConfigForm.php b/modules/next/src/Form/NextEntityTypeConfigForm.php index feb56514..37d2e65b 100644 --- a/modules/next/src/Form/NextEntityTypeConfigForm.php +++ b/modules/next/src/Form/NextEntityTypeConfigForm.php @@ -119,16 +119,16 @@ public function form(array $form, FormStateInterface $form_state) { '#title' => $this->t('Settings'), ]; - $form['preview_mode'] = [ - '#title' => $this->t('Preview Mode'), - '#description' => $this->t('Configure preview mode the entity type.'), + $form['draft_mode'] = [ + '#title' => $this->t('Draft Mode'), + '#description' => $this->t('Configure draft mode for this entity type.'), '#type' => 'details', '#group' => 'settings', ]; - $form['preview_mode']['site_resolver'] = [ + $form['draft_mode']['site_resolver'] = [ '#title' => $this->t('Plugin'), - '#description' => $this->t('Select a plugin to use for resolving the preview site for this entity type.'), + '#description' => $this->t('Select a plugin to use when validating the draft url for this entity type.'), '#type' => 'select', '#options' => array_merge(['' => $this->t('None')], array_column($this->siteResolverManager->getDefinitions(), 'label', 'id')), '#default_value' => $entity->getSiteResolver() ? $entity->getSiteResolver()->getId() : NULL, @@ -142,7 +142,7 @@ public function form(array $form, FormStateInterface $form_state) { ], ]; - $form['preview_mode']['site_resolver_settings_container'] = [ + $form['draft_mode']['site_resolver_settings_container'] = [ '#type' => 'container', '#prefix' => '
', '#suffix' => '
', @@ -152,7 +152,7 @@ public function form(array $form, FormStateInterface $form_state) { if ($site_resolver instanceof ConfigurableSiteResolverInterface) { $form['configuration'] = []; $subform_state = SubformState::createForSubform($form['configuration'], $form, $form_state); - $form['preview_mode']['site_resolver_settings_container']['configuration'] = $site_resolver->buildConfigurationForm($form['configuration'], $subform_state); + $form['draft_mode']['site_resolver_settings_container']['configuration'] = $site_resolver->buildConfigurationForm($form['configuration'], $subform_state); } $form['revalidation'] = [ @@ -223,7 +223,7 @@ public function submitSiteResolver(array $form, FormStateInterface $form_state) * Handles switching the site resolver selector. */ public function ajaxReplaceSiteResolverSettingsForm($form, FormStateInterface $form_state) { - return $form['preview_mode']['site_resolver_settings_container']; + return $form['draft_mode']['site_resolver_settings_container']; } /** diff --git a/modules/next/src/Form/NextSettingsForm.php b/modules/next/src/Form/NextSettingsForm.php index ac938209..9d1b4181 100644 --- a/modules/next/src/Form/NextSettingsForm.php +++ b/modules/next/src/Form/NextSettingsForm.php @@ -87,14 +87,14 @@ public function buildForm(array $form, FormStateInterface $form_state) { ]; $form['preview_url_generator_container'] = [ - '#title' => $this->t('Preview URL'), + '#title' => $this->t('Draft Mode'), '#type' => 'details', '#group' => 'settings', ]; $form['preview_url_generator_container']['preview_url_generator'] = [ '#title' => $this->t('Plugin'), - '#description' => $this->t('Select a plugin to use for the preview URL generator.'), + '#description' => $this->t('Select a plugin to use for the draft validation generator.'), '#type' => 'select', '#options' => array_column($this->previewUrlGeneratorManager->getDefinitions(), 'label', 'id'), '#default_value' => $config->get('preview_url_generator'), diff --git a/modules/next/src/Form/NextSiteForm.php b/modules/next/src/Form/NextSiteForm.php index 46741ffd..9ccfd0d2 100644 --- a/modules/next/src/Form/NextSiteForm.php +++ b/modules/next/src/Form/NextSiteForm.php @@ -38,7 +38,7 @@ public function form(array $form, FormStateInterface $form_state) { ]; $form['base_url'] = [ - '#type' => 'textfield', + '#type' => 'url', '#title' => $this->t('Base URL'), '#description' => $this->t('Enter the base URL for the Next.js site. Example: https://example.com.'), '#default_value' => $entity->getBaseUrl(), @@ -51,39 +51,39 @@ public function form(array $form, FormStateInterface $form_state) { ]; $form['preview'] = [ - '#title' => $this->t('Preview Mode'), - '#description' => $this->t('Preview mode allows editors to preview content on the site. You can read more on the Next.js documentation.', [ - ':uri' => 'https://nextjs.org/docs/advanced-features/preview-mode', + '#title' => $this->t('Draft Mode'), + '#description' => $this->t('Draft mode (or the deprecated Preview mode) allows editors to preview content on the site. You can read more on the Next.js documentation.', [ + ':uri' => 'https://nextjs.org/docs/app/building-your-application/configuring/draft-mode', ]), '#type' => 'details', '#group' => 'settings', ]; $form['preview']['preview_url'] = [ - '#type' => 'textfield', - '#title' => $this->t('Preview URL'), - '#description' => $this->t('Enter the preview URL. Example: https://example.com/api/preview.'), + '#type' => 'url', + '#title' => $this->t('Draft URL (or Preview URL)'), + '#description' => $this->t('Enter the draft URL or preview URL. Example: https://example.com/api/draft or https://example.com/api/preview.'), '#default_value' => $entity->getPreviewUrl(), ]; $form['preview']['preview_secret'] = [ '#type' => 'textfield', - '#title' => $this->t('Preview secret'), - '#description' => $this->t('Enter a secret for the site preview. This is the same value used for DRUPAL_PREVIEW_SECRET.'), + '#title' => $this->t('Secret key'), + '#description' => $this->t('Enter a secret for the site draft/preview. This must be unique for each Next.js site'), '#default_value' => $entity->getPreviewSecret(), ]; $form['revalidation'] = [ '#title' => $this->t('On-demand Revalidation'), '#description' => $this->t('On-demand revalidation updates your pages when content is updated on your Drupal site. You can read more on the Next.js documentation.', [ - ':uri' => 'https://nextjs.org/docs/advanced-features/preview-mode', + ':uri' => 'https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#revalidating-data', ]), '#type' => 'details', '#group' => 'settings', ]; $form['revalidation']['revalidate_url'] = [ - '#type' => 'textfield', + '#type' => 'url', '#title' => $this->t('Revalidate URL'), '#description' => $this->t('Enter the revalidate URL. Example: https://example.com/api/revalidate.'), '#default_value' => $entity->getRevalidateUrl(), diff --git a/modules/next/src/Plugin/Next/PreviewUrlGenerator/SimpleOauth.php b/modules/next/src/Plugin/Next/PreviewUrlGenerator/SimpleOauth.php index ec17960f..27144c53 100644 --- a/modules/next/src/Plugin/Next/PreviewUrlGenerator/SimpleOauth.php +++ b/modules/next/src/Plugin/Next/PreviewUrlGenerator/SimpleOauth.php @@ -66,7 +66,16 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { - return new static($configuration, $plugin_id, $plugin_definition, $container->get('current_user'), $container->get('datetime.time'), $container->get('next.preview_secret_generator'), $container->get('entity_type.manager'), $container->get('module_handler')); + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('current_user'), + $container->get('datetime.time'), + $container->get('next.preview_secret_generator'), + $container->get('entity_type.manager'), + $container->get('module_handler') + ); } /** @@ -83,8 +92,8 @@ public function defaultConfiguration() { */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form['secret_expiration'] = [ - '#title' => $this->t('Preview secret expiration time'), - '#description' => $this->t('The value, in seconds, to be used as expiration time for the preview secret. It is recommended to use short-lived secrets for increased security.'), + '#title' => $this->t('Secret expiration time'), + '#description' => $this->t('The value, in seconds, to be used as expiration time for the validation secret. It is recommended to use short-lived secrets for increased security.'), '#type' => 'number', '#required' => TRUE, '#default_value' => $this->configuration['secret_expiration'], @@ -119,18 +128,9 @@ public function generate(NextSiteInterface $next_site, EntityInterface $entity, $query = []; $query['slug'] = $slug = $entity->toUrl()->toString(); - // Send the current user roles as scope. - $scopes = $this->getScopesForCurrentUser(); - - if (!count($scopes)) { - return NULL; - } - - $query['scope'] = $scope = implode(' ', $scopes); - // Create a secret based on the timestamp, slug, scope and resource version. $query['timestamp'] = $timestamp = $this->time->getRequestTime(); - $query['secret'] = $this->previewSecretGenerator->generate($timestamp . $slug . $scope . $resource_version); + $query['secret'] = $this->previewSecretGenerator->generate($timestamp . $slug . $resource_version); return Url::fromUri($next_site->getPreviewUrl(), [ 'query' => $query, @@ -159,66 +159,19 @@ public function validate(Request $request) { throw new InvalidPreviewUrlRequest("The provided secret has expired."); } - if (empty($body['scope'])) { - throw new InvalidPreviewUrlRequest("Field 'scope' is missing"); - } - // Validate the secret. if (empty($body['secret'])) { throw new InvalidPreviewUrlRequest("Field 'secret' is missing"); } - if ($body['secret'] !== $this->previewSecretGenerator->generate($body['timestamp'] . $body['slug'] . $body['scope'] . $body['resourceVersion'])) { + if ($body['secret'] !== $this->previewSecretGenerator->generate($body['timestamp'] . $body['slug'] . $body['resourceVersion'])) { throw new InvalidPreviewUrlRequest("The provided secret is invalid."); } return [ - 'scope' => $body['scope'], + 'path' => $body['slug'], + 'maxAge' => (int) $this->configuration['secret_expiration'], ]; } - /** - * Returns scope for the current user. - * - * @return array|mixed - * An array of roles as scopes. - * - * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException - * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException - */ - protected function getScopesForCurrentUser(): array { - $roles = $this->currentUser->getRoles(TRUE); - $admin_role = $this->getAdminRole(); - - // Return the admin role for administrators. - if ((int) $this->currentUser->id() === 1 || in_array($admin_role, $roles)) { - return [$admin_role]; - } - - return $roles; - } - - /** - * Returns an array of admin roles. - * - * @return string|null - * The admin role. - * - * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException - * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException - */ - protected function getAdminRole(): ?string { - $admin_roles = $this->entityTypeManager->getStorage('user_role') - ->getQuery() - ->accessCheck(FALSE) - ->condition('is_admin', TRUE) - ->execute(); - - if (!$admin_roles) { - return NULL; - } - - return reset($admin_roles); - } - } diff --git a/modules/next/tests/modules/next_tests/next_tests.services.yml b/modules/next/tests/modules/next_tests/next_tests.services.yml index 9daf7ef2..58f883a0 100644 --- a/modules/next/tests/modules/next_tests/next_tests.services.yml +++ b/modules/next/tests/modules/next_tests/next_tests.services.yml @@ -1,11 +1,11 @@ services: next_tests.entity_action_event_subscriber: class: Drupal\next_tests\EventSubscriber\EntityActionEventSubscriber - arguments: ["@logger.channel.default"] + arguments: ['@logger.channel.default'] tags: - { name: event_subscriber } next_tests.entity_revalidated_event_subscriber: class: Drupal\next_tests\EventSubscriber\EntityRevalidatedEventSubscriber - arguments: ["@logger.channel.default"] + arguments: ['@logger.channel.default'] tags: - { name: event_subscriber } diff --git a/modules/next/tests/src/Kernel/Controller/NextPreviewUrlControllerTest.php b/modules/next/tests/src/Kernel/Controller/NextPreviewUrlControllerTest.php index da752d85..46d71ad3 100644 --- a/modules/next/tests/src/Kernel/Controller/NextPreviewUrlControllerTest.php +++ b/modules/next/tests/src/Kernel/Controller/NextPreviewUrlControllerTest.php @@ -71,7 +71,10 @@ public function testValidate() { $controller = NextPreviewUrlController::create($this->container); $response = $controller->validate($request); - $this->assertSame(['scope' => $user->getRoles(TRUE)[0]], Json::decode($response->getContent())); + $this->assertSame([ + 'path' => $page->toUrl()->toString(), + 'maxAge' => $this->config('next.settings')->get('preview_url_generator_configuration.secret_expiration'), + ], Json::decode($response->getContent())); } } diff --git a/modules/next/tests/src/Kernel/Event/EntityActionEventTest.php b/modules/next/tests/src/Kernel/Event/EntityActionEventTest.php index 3db364ba..4af09b25 100644 --- a/modules/next/tests/src/Kernel/Event/EntityActionEventTest.php +++ b/modules/next/tests/src/Kernel/Event/EntityActionEventTest.php @@ -7,6 +7,8 @@ use Drupal\KernelTests\KernelTestBase; use Drupal\node\Entity\NodeType; use Drupal\Tests\node\Traits\NodeCreationTrait; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Tests the EntityActionEvent. @@ -60,17 +62,17 @@ public function testEntityActionEvents() { // Insert. $page->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $this->assertLogsContains("Event next.entity.action dispatched for entity A page and action insert."); // Update. $page->set('title', 'A page updated')->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $this->assertLogsContains("Event next.entity.action dispatched for entity A page updated and action update."); // Delete. $page->delete(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $this->assertLogsContains("Event next.entity.action dispatched for entity A page updated and action delete."); } diff --git a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php index 51d9e983..e8c69d07 100644 --- a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php +++ b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php @@ -7,6 +7,8 @@ use Drupal\KernelTests\KernelTestBase; use Drupal\next\Entity\NextEntityTypeConfig; use Drupal\Tests\node\Traits\NodeCreationTrait; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Tests the EntityRevalidatedEvent. @@ -70,17 +72,17 @@ public function testEntityRevalidatedEvents() { // Insert. $page->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $this->assertLogsContains("Entity A page, action insert, revalidated 0."); // Update. $page->set('title', 'A page updated')->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $this->assertLogsContains("Entity A page updated, action update, revalidated 0."); // Delete. $page->delete(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $this->assertLogsContains("Entity A page updated, action delete, revalidated 0."); } diff --git a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php index 56306460..09fc19cb 100644 --- a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php +++ b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php @@ -7,7 +7,10 @@ use Drupal\next\Entity\NextSite; use Drupal\Tests\node\Traits\NodeCreationTrait; use GuzzleHttp\ClientInterface; +use GuzzleHttp\Psr7\Response as GuzzleResponse; use Prophecy\PhpUnit\ProphecyTrait; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Tests the path revalidator plugin. @@ -80,13 +83,13 @@ public function testRevalidate() { $client->request('GET', $this->any())->shouldNotBeCalled(); $page = $this->createNode(); $page->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); - $client->request('GET', 'http://blog.com/api/revalidate?slug=/node/2')->shouldBeCalled(); + $client->request('GET', 'http://blog.com/api/revalidate?slug=/node/2')->shouldBeCalled()->willReturn(new GuzzleResponse()); $blog_site->setRevalidateUrl('http://blog.com/api/revalidate')->save(); $page = $this->createNode(); $page->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $marketing = NextSite::create([ 'id' => 'marketing', @@ -101,25 +104,25 @@ public function testRevalidate() { ], ])->save(); - $client->request('GET', 'http://marketing.com/api/revalidate?slug=/node/3&secret=12345')->shouldBeCalled(); - $client->request('GET', 'http://blog.com/api/revalidate?slug=/node/3')->shouldBeCalled(); + $client->request('GET', 'http://marketing.com/api/revalidate?slug=/node/3&secret=12345')->shouldBeCalled()->willReturn(new GuzzleResponse()); + $client->request('GET', 'http://blog.com/api/revalidate?slug=/node/3')->shouldBeCalled()->willReturn(new GuzzleResponse()); $page = $this->createNode(); $page->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); $entity_type_config->setRevalidatorConfiguration('path', [ 'additional_paths' => "/\n/blog", ])->save(); - $client->request('GET', 'http://marketing.com/api/revalidate?slug=/node/3&secret=12345')->shouldBeCalled(); - $client->request('GET', 'http://marketing.com/api/revalidate?slug=/&secret=12345')->shouldBeCalled(); - $client->request('GET', 'http://marketing.com/api/revalidate?slug=/blog&secret=12345')->shouldBeCalled(); - $client->request('GET', 'http://blog.com/api/revalidate?slug=/node/3')->shouldBeCalled(); - $client->request('GET', 'http://blog.com/api/revalidate?slug=/')->shouldBeCalled(); - $client->request('GET', 'http://blog.com/api/revalidate?slug=/blog')->shouldBeCalled(); + $client->request('GET', 'http://marketing.com/api/revalidate?slug=/node/3&secret=12345')->shouldBeCalled()->willReturn(new GuzzleResponse()); + $client->request('GET', 'http://marketing.com/api/revalidate?slug=/&secret=12345')->shouldBeCalled()->willReturn(new GuzzleResponse()); + $client->request('GET', 'http://marketing.com/api/revalidate?slug=/blog&secret=12345')->shouldBeCalled()->willReturn(new GuzzleResponse()); + $client->request('GET', 'http://blog.com/api/revalidate?slug=/node/3')->shouldBeCalled()->willReturn(new GuzzleResponse()); + $client->request('GET', 'http://blog.com/api/revalidate?slug=/')->shouldBeCalled()->willReturn(new GuzzleResponse()); + $client->request('GET', 'http://blog.com/api/revalidate?slug=/blog')->shouldBeCalled()->willReturn(new GuzzleResponse()); $page = $this->createNode(); $page->save(); - _drupal_shutdown_function(); + $this->container->get('kernel')->terminate(Request::create('/'), new Response()); } } diff --git a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php index d5867f83..3ae17ad7 100644 --- a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php +++ b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php @@ -34,6 +34,13 @@ class SimpleOauthPreviewUrlGeneratorTest extends KernelTestBase { */ protected $nextSite; + /** + * The next settings manager. + * + * @var \Drupal\next\NextSettingsManagerInterface + */ + protected $nextSettingsManager; + /** * {@inheritdoc} */ @@ -46,6 +53,8 @@ protected function setUp(): void { $this->installSchema('system', ['sequences']); $this->installSchema('node', ['node_access']); + $this->nextSettingsManager = $this->container->get('next.settings.manager'); + // Create NextSite entities. $this->nextSite = NextSite::create([ 'label' => 'Blog', @@ -91,44 +100,11 @@ public function testGenerate() { $this->assertNotEmpty($query['timestamp']); $this->assertNotEmpty($query['secret']); $this->assertSame($query['plugin'], 'simple_oauth'); - $this->assertContains($query['scope'], $user->getRoles()); // Test the secret. /** @var \Drupal\next\PreviewSecretGeneratorInterface $secret_generator */ $secret_generator = \Drupal::service('next.preview_secret_generator'); - $this->assertSame($query['secret'], $secret_generator->generate($query['timestamp'] . $query['slug'] . $query['scope'] . $query['resourceVersion'])); - } - - /** - * @covers ::getScopesForCurrentUser - * @covers ::getAdminRole - */ - public function testCurrentUserScopes() { - /** @var \Drupal\next\NextSettingsManagerInterface $next_settings_manager */ - $next_settings_manager = $this->container->get('next.settings.manager'); - /** @var \Drupal\next\Plugin\Next\PreviewUrlGenerator\SimpleOauth $preview_url_generator */ - $preview_url_generator = $next_settings_manager->getPreviewUrlGenerator(); - - $page = $this->createNode(['type' => 'page']); - - // Log in as anonymous user. - $this->setCurrentUser(User::load(0)); - $url = $preview_url_generator->generate($this->nextSite, $page); - $this->assertNull($url); - - // Log in as user 1. - $admin_role = $this->createAdminRole(); - $this->setCurrentUser(User::load(1)); - $url = $preview_url_generator->generate($this->nextSite, $page); - $query = $url->getOption('query'); - $this->assertSame($query['scope'], $admin_role); - - // Log in as admin user. - $admin_user = $this->createUser([], NULL, TRUE); - $this->setCurrentUser($admin_user); - $url = $preview_url_generator->generate($this->nextSite, $page); - $query = $url->getOption('query'); - $this->assertSame($query['scope'], $admin_user->getRoles(TRUE)[0]); + $this->assertSame($query['secret'], $secret_generator->generate($query['timestamp'] . $query['slug'] . $query['resourceVersion'])); } /** @@ -137,10 +113,7 @@ public function testCurrentUserScopes() { */ public function testValidateForInvalidBody($body, $message, $is_valid = FALSE) { $request = Request::create('/', 'POST', [], [], [], [], Json::encode($body)); - - /** @var \Drupal\next\NextSettingsManagerInterface $next_settings_manager */ - $next_settings_manager = $this->container->get('next.settings.manager'); - $preview_url_generator = $next_settings_manager->getPreviewUrlGenerator(); + $preview_url_generator = $this->nextSettingsManager->getPreviewUrlGenerator(); if (!$is_valid) { $this->expectExceptionMessage($message); @@ -159,15 +132,9 @@ public function testValidateSecret() { $query = $preview_url->getOption('query'); $request = Request::create('/', 'POST', [], [], [], [], Json::encode($query)); + $preview_url_generator = $this->nextSettingsManager->getPreviewUrlGenerator(); - /** @var \Drupal\next\NextSettingsManagerInterface $next_settings_manager */ - $next_settings_manager = $this->container->get('next.settings.manager'); - $preview_url_generator = $next_settings_manager->getPreviewUrlGenerator(); - - $response = $preview_url_generator->validate($request); - $role = $user->getRoles(TRUE)[0]; - $this->assertSame(['scope' => $role], $response); - + $preview_url_generator->validate($request); $this->expectExceptionMessage('The provided secret is invalid.'); $query = $preview_url->getOption('query'); $query['timestamp'] = strtotime('+60seconds'); @@ -185,12 +152,6 @@ public function testValidateSecret() { $query['resourceVersion'] = 'rel:23'; $request = Request::create('/', 'POST', [], [], [], [], Json::encode($query)); $preview_url_generator->validate($request); - - $this->expectExceptionMessage('The provided secret is invalid.'); - $query = $preview_url->getOption('query'); - $query['scope'] = 'editor'; - $request = Request::create('/', 'POST', [], [], [], [], Json::encode($query)); - $preview_url_generator->validate($request); } /** @@ -203,15 +164,10 @@ public function providerValidateForInvalidBody() { return [ [[], "Field 'slug' is missing"], [['slug' => '/node/1'], "Field 'timestamp' is missing"], - [ - ['slug' => '/node/1', 'timestamp' => strtotime('now')], - "Field 'scope' is missing", - ], [ [ 'slug' => '/node/1', 'timestamp' => strtotime('now'), - 'scope' => 'llama', ], "Field 'secret' is missing", ], @@ -219,7 +175,6 @@ public function providerValidateForInvalidBody() { [ 'slug' => '/node/1', 'timestamp' => strtotime('-60 seconds'), - 'scope' => 'llama', 'secret' => 'secret', ], "The provided secret has expired.", @@ -228,7 +183,6 @@ public function providerValidateForInvalidBody() { [ 'slug' => '/node/1', 'timestamp' => strtotime('60 seconds'), - 'scope' => 'llama', 'secret' => 'secret', ], "", diff --git a/package.json b/package.json index ca7fe754..95b34c1e 100644 --- a/package.json +++ b/package.json @@ -11,66 +11,67 @@ "www" ], "scripts": { - "test": "jest", "dev": "turbo run dev --parallel", "dev:starter": "lerna run --parallel --scope drupal --scope basic-starter dev", "prepare": "lerna run prepare && husky install", "watch": "lerna run watch", "lint": "eslint --cache --ext .js,.jsx,.ts,.tsx .", + "format": "prettier --write .", + "format:check": "prettier --check .", "phpcs": "./drupal/vendor/bin/phpcs -p -s --colors --standard=modules/next/phpcs.xml modules/next", - "test:next": "./drupal/vendor/bin/phpunit -c ./drupal/web modules/next", - "sync:modules": "./scripts/sync-modules.sh \"modules/*\"", - "sync:examples": "./scripts/sync-examples.sh \"examples/example-*\"", - "sync:starters": "./scripts/sync-starters.sh \"starters/*\"", + "test:next": "SIMPLETEST_DB=sqlite://localhost/:memory: ./drupal/vendor/bin/phpunit -c ./drupal/web/core modules/next", + "sync:modules": "./scripts/sync-repo.sh 2.x git@git.drupal.org:project/ \"modules/*\"", + "sync:examples": "./scripts/sync-repo.sh main git@github.com:chapter-three/next- \"examples/example-*\"", + "sync:starters": "./scripts/sync-repo.sh canary git@github.com:chapter-three/next-drupal- \"starters/*\"", + "sync:starters:release": "./scripts/sync-repo.sh canary,main git@github.com:chapter-three/next-drupal- \"starters/*\"", "seed": "NUM_NODES=200 node ./scripts/seed", "cy:open": "turbo run cy:open --parallel", + "test": "yarn workspace next-drupal test && yarn workspace next-drupal-query test", + "pretest": "yarn format:check && yarn lint", "test:e2e": "turbo run test:e2e --parallel", "test:e2e:ci": "turbo run test:e2e:ci --parallel" }, "resolutions": { - "@types/react": "17.0.68", - "@types/react-dom": "17.0.21" + "@types/react": "17.0.75", + "@types/react-dom": "17.0.25" }, "devDependencies": { "@actions/core": "^1.10.1", - "@babel/core": "^7.23.2", - "@babel/eslint-parser": "^7.22.15", - "@babel/plugin-transform-runtime": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@babel/preset-react": "^7.22.15", - "@commitlint/cli": "^17.8.0", - "@commitlint/config-conventional": "^17.8.0", + "@babel/core": "^7.23.9", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@commitlint/cli": "^18.6.1", + "@commitlint/config-conventional": "^18.6.2", "@next/eslint-plugin-next": "^12.3.4", "@testing-library/cypress": "^8.0.7", - "@types/jest": "^27.5.2", - "@types/node": "^17.0.45", - "@types/react": "^17.0.68", - "@types/react-dom": "^17.0.21", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@types/jest": "^29.5.12", + "@types/node": "^20.11.19", + "@types/react": "^17.0.75", + "@types/react-dom": "^17.0.25", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", "cypress": "^9.7.0", - "eslint": "^8.51.0", - "eslint-config-prettier": "^8.10.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-cypress": "^2.15.1", - "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.33.2", "faker": "^6.6.6", - "husky": "^8.0.3", + "husky": "^9.0.11", "isomorphic-fetch": "^3.0.0", - "jest": "^27.5.1", - "lerna": "^4.0.0", - "microbundle": "^0.15.1", - "prettier": "^2.8.8", - "pretty-quick": "^3.1.3", + "jest": "^29.7.0", + "lerna": "^8.1.2", + "lint-staged": "^15.2.2", + "prettier": "^3.2.5", "start-server-and-test": "^1.15.5", - "ts-jest": "^27.1.5", - "ts-node": "^10.9.1", - "turbo": "^1.10.15", - "typescript": "^4.9.5", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "tsup": "^8.0.2", + "turbo": "^1.12.4", + "typescript": "^5.3.3", "uuid": "^9.0.1", - "yaml": "^2.3.3" - }, - "engines": { - "node": ">=16.19.0" + "yaml": "^2.3.4" } } diff --git a/packages/next-drupal-query/CHANGELOG.md b/packages/next-drupal-query/CHANGELOG.md index c0d69d00..70de4df6 100644 --- a/packages/next-drupal-query/CHANGELOG.md +++ b/packages/next-drupal-query/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.5.0-alpha.0](https://github.com/chapter-three/next-drupal/compare/next-drupal-query@0.4.0...next-drupal-query@0.5.0-alpha.0) (2024-01-05) + + +### Features + +* **next-drupal:** add Next.js v14 support ([32a5a0a](https://github.com/chapter-three/next-drupal/commit/32a5a0a582c5faa93f8ac1a9633a89c60f5fd627)), closes [#578](https://github.com/chapter-three/next-drupal/issues/578) + + + + + # [0.4.0](https://github.com/chapter-three/next-drupal/compare/next-drupal-query@0.3.0...next-drupal-query@0.4.0) (2022-12-06) **Note:** Version bump only for package next-drupal-query diff --git a/packages/next-drupal-query/jest.config.cjs b/packages/next-drupal-query/jest.config.cjs new file mode 100644 index 00000000..24a2d4bb --- /dev/null +++ b/packages/next-drupal-query/jest.config.cjs @@ -0,0 +1,29 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: "ts-jest/presets/js-with-ts", + testEnvironment: "node", + setupFiles: ["dotenv/config"], + setupFilesAfterEnv: ["/jest.setup.ts"], + testMatch: ["**/tests/**/*.test.{ts,tsx}"], + transform: { + "^.+\\.tsx?$": [ + "ts-jest", + { + isolatedModules: true, + }, + ], + }, + testLocationInResults: true, + coverageProvider: "v8", + collectCoverage: true, + collectCoverageFrom: ["./src/**"], + coverageReporters: ["lcov", "text", "text-summary"], + coverageThreshold: { + global: { + statements: 84.22, + branches: 64.1, + functions: 70, + lines: 84.22, + }, + }, +} diff --git a/jest.setup.ts b/packages/next-drupal-query/jest.setup.ts similarity index 100% rename from jest.setup.ts rename to packages/next-drupal-query/jest.setup.ts diff --git a/packages/next-drupal-query/package.json b/packages/next-drupal-query/package.json index a3568ca2..38307fab 100644 --- a/packages/next-drupal-query/package.json +++ b/packages/next-drupal-query/package.json @@ -1,13 +1,25 @@ { "name": "next-drupal-query", "description": "Query helpers for structuring large Next.js and Drupal projects.", - "version": "0.4.0", + "version": "0.5.0-alpha.0", "sideEffects": false, "source": "src/index.ts", "type": "module", "main": "dist/index.cjs", - "module": "dist/index.modern.js", + "module": "dist/index.js", "types": "dist/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + } + }, "license": "MIT", "publishConfig": { "access": "public" @@ -17,9 +29,9 @@ "url": "https://twitter.com/shadcn" }, "scripts": { - "prepare": "microbundle --no-compress --jsx React.createElement --format modern,cjs", - "dev": "microbundle watch --no-compress --jsx React.createElement --format modern,cjs", - "test": "jest" + "prepare": "tsup", + "dev": "tsup --watch", + "test": "jest --verbose" }, "keywords": [ "next.js", @@ -37,13 +49,12 @@ "directory": "packages/next-drupal-query" }, "devDependencies": { - "rollup-plugin-node-builtins": "^2.1.2", - "typescript": "^4.9.5" + "type-fest": "^4.8.1", + "typescript": "^5.2.2" }, "dependencies": { "deepmerge": "^4.3.1", "drupal-jsonapi-params": "^2.3.1", - "next": "^12.2.3 || ^13", - "type-fest": "^2.19.0" + "next": "^12.2.3 || ^13 || ^14" } } diff --git a/packages/next-drupal-query/src/index.ts b/packages/next-drupal-query/src/index.ts index 42e8079f..9c27ee45 100644 --- a/packages/next-drupal-query/src/index.ts +++ b/packages/next-drupal-query/src/index.ts @@ -1,6 +1,6 @@ import deepmerge from "deepmerge" import { DrupalJsonApiParams } from "drupal-jsonapi-params" -import { GetServerSidePropsContext, GetStaticPathsContext } from "next" +import type { GetServerSidePropsContext, GetStaticPathsContext } from "next" import type { RequireAllOrNone, ConditionalKeys } from "type-fest" // Note: some generic are explicitly not typed here to force definition. @@ -185,7 +185,7 @@ type Queries = Record< type QueryTypeOf< Q extends Queries, T extends keyof Q, - F extends "params" | "data" | "formatter" | "placeholder" + F extends "params" | "data" | "formatter" | "placeholder", > = Q[T][F] // type QueryId = keyof Q @@ -200,7 +200,7 @@ type QueryDataOpts, T extends keyof Q> = Parameters< type QueryPlaceholderDataOpts< Q extends Queries, - T extends keyof Q + T extends keyof Q, > = Parameters[0] type QueryFormatterInput, T extends keyof Q> = Parameters< @@ -213,7 +213,7 @@ type QueryDataReturn, T extends keyof Q> = ReturnType< type QueryPlaceholderDataReturn< Q extends Queries, - T extends keyof Q + T extends keyof Q, > = ReturnType> type QueryFormatterReturn, T extends keyof Q> = ReturnType< @@ -235,7 +235,7 @@ export function withPagination( } } - if (typeof opts.page !== undefined && typeof opts.limit !== undefined) { + if (typeof opts.page !== "undefined" && typeof opts.limit !== "undefined") { params.addPageLimit(opts.limit).addPageOffset(opts.page * opts.limit) } @@ -268,7 +268,7 @@ export function massageRouteQuery(query) { export function createQueries>>(queries: Q) { const getRawData = async < T extends ConditionalKeys, - O extends QueryDataOpts + O extends QueryDataOpts, >( id: T, opts: O = null @@ -292,8 +292,8 @@ export function createQueries>>(queries: Q) { opts = massageRouteQuery(opts) if ( - typeof query["defaultOpts"] !== undefined && - typeof opts !== undefined + typeof query["defaultOpts"] !== "undefined" && + typeof opts !== "undefined" ) { // eslint-disable-next-line @typescript-eslint/no-explicit-any opts = deepmerge(query["defaultOpts"], opts as any) as any @@ -305,7 +305,7 @@ export function createQueries>>(queries: Q) { const getPlaceholderData = async < T extends ConditionalKeys, - O extends QueryPlaceholderDataOpts + O extends QueryPlaceholderDataOpts, >( id: T, opts: O = null @@ -328,7 +328,7 @@ export function createQueries>>(queries: Q) { const formatData = < T extends ConditionalKeys, - Input extends QueryFormatterInput + Input extends QueryFormatterInput, >( id: T, input: Input @@ -357,17 +357,17 @@ export function createQueries>>(queries: Q) { async function getData< T extends ConditionalKeys, - O extends QueryDataOpts + O extends QueryDataOpts, >(id: T, opts?: O): Promise> async function getData< T extends ConditionalKeys, - O extends QueryDataOpts + O extends QueryDataOpts, >(id: T, opts?: O): Promise> async function getData< T extends ConditionalKeys, - O extends QueryPlaceholderDataOpts + O extends QueryPlaceholderDataOpts, >(id: T, opts?: O): Promise> async function getData(id, opts = null) { @@ -412,7 +412,7 @@ export function createQueries>>(queries: Q) { }, getParams: < T extends ConditionalKeys, - O extends QueryParamsOpts + O extends QueryParamsOpts, >( id: T = null, opts: O = null diff --git a/packages/next-drupal-query/tests/__snapshots__/index.test.ts.snap b/packages/next-drupal-query/tests/__snapshots__/index.test.ts.snap index 1abeff66..5aac1b87 100644 --- a/packages/next-drupal-query/tests/__snapshots__/index.test.ts.snap +++ b/packages/next-drupal-query/tests/__snapshots__/index.test.ts.snap @@ -1,13 +1,13 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`formatData it formats data 1`] = ` -Object { +{ "name": "First Last", } `; exports[`getData it accepts data options 1`] = ` -Object { +{ "author": "shadcn", "id": "ID", "title": "Title of Article", @@ -16,14 +16,14 @@ Object { `; exports[`getData it accepts placeholder options 1`] = ` -Object { +{ "email": "name@example.com", "name": "shadcn", } `; exports[`getData it returns data for a query 1`] = ` -Object { +{ "author": "shadcn", "id": "id", "title": "Title of Article", @@ -32,52 +32,52 @@ Object { `; exports[`getData it returns data when both data and placeholder is defined 1`] = ` -Object { +{ "email": "foo@example.com", } `; exports[`getData it returns formatted data if a formatter is defined 1`] = ` -Object { +{ "email": "foo@example.com", "name": "First Last", } `; exports[`getData it returns placeholder data if a query does not define data 1`] = ` -Object { +{ "name": "shadcn", } `; exports[`getParams it accepts params options 1`] = ` -Object { - "fields": Object { +{ + "fields": { "resource": "foo,bar", }, - "filter": Object {}, - "include": Array [], - "sort": Array [], + "filter": {}, + "include": [], + "sort": [], } `; exports[`getParams it allows params to be nested 1`] = ` -Object { - "fields": Object {}, - "filter": Object {}, +{ + "fields": {}, + "filter": {}, "include": "field_image,uid", - "page": Object { + "page": { "limit": 10, }, - "sort": Array [], + "sort": [], } `; exports[`getParams it returns params for a query 1`] = ` -Object { - "fields": Object {}, - "filter": Object {}, +{ + "fields": {}, + "filter": {}, "include": "field_image,uid", - "sort": Array [], + "sort": [], } `; diff --git a/packages/next-drupal-query/tsup.config.ts b/packages/next-drupal-query/tsup.config.ts new file mode 100644 index 00000000..2562b07f --- /dev/null +++ b/packages/next-drupal-query/tsup.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "tsup" + +export const tsup = defineConfig({ + entry: ["src/index.ts"], + // Enable experimental code splitting support in CommonJS. + // splitting: true, + // Use Rollup for tree shaking. + // treeshake: true, + sourcemap: true, + clean: true, + format: ["esm", "cjs"], + dts: true, + cjsInterop: true, +}) diff --git a/packages/next-drupal/CHANGELOG.md b/packages/next-drupal/CHANGELOG.md index b044c68b..6b1642f4 100644 --- a/packages/next-drupal/CHANGELOG.md +++ b/packages/next-drupal/CHANGELOG.md @@ -3,6 +3,82 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-alpha.1](https://github.com/chapter-three/next-drupal/compare/next-drupal@2.0.0-alpha.0...next-drupal@2.0.0-alpha.1) (2024-02-21) + + +### Bug Fixes + +* **next-drupal:** update TypeScript definition for translatePath and translatePathFromContext ([9f6ae58](https://github.com/chapter-three/next-drupal/commit/9f6ae5816da2339e374b91fa7cc026b3ff0d4709)), closes [#359](https://github.com/chapter-three/next-drupal/issues/359) + + +* refactor(next-drupal)!: move non-DrupalClient code to src/deprecated ([f04c617](https://github.com/chapter-three/next-drupal/commit/f04c61776cbb7905577865639d1403a1a02428b9)) +* feat(next-drupal)!: drop forceIframeSameSiteCookie option ([083cebb](https://github.com/chapter-three/next-drupal/commit/083cebbf33da9bdf40ede4e6f75bc510af9dfa65)) +* feat(next-drupal)!: add draft mode to pages router ([a4f8d84](https://github.com/chapter-three/next-drupal/commit/a4f8d840038f2ab6f7a6e733b48240ecade55266)), closes [#502](https://github.com/chapter-three/next-drupal/issues/502) +* feat(next-drupal)!: add public debug() method to DrupalClient ([e0fc4bd](https://github.com/chapter-three/next-drupal/commit/e0fc4bd6697c11803539b5faef68a0e0e897d653)), closes [#668](https://github.com/chapter-three/next-drupal/issues/668) + + +### Features + +* **next-drupal:** add draft mode for app router pages ([7a62a39](https://github.com/chapter-three/next-drupal/commit/7a62a3921ca36291b5a5eeb7db942c006e0645e0)), closes [#502](https://github.com/chapter-three/next-drupal/issues/502) +* **next:** remove scope from preview URL generation and validation process ([dde673d](https://github.com/chapter-three/next-drupal/commit/dde673d1952da918e2fb5a2e05a49ddb2408356b)), closes [#635](https://github.com/chapter-three/next-drupal/issues/635) + + +### BREAKING CHANGES + +* The JsonApiWithAuthOptions type has been renamed to JsonApiWithAuthOption. The +JsonApiWithLocaleOptions type is now considered deprecated for DrupalClient +usage and can be replaced with the JsonApiOptions type. +* The forceIframeSameSiteCookie option to DrupalClient has been removed. The +DrupalClient now automatically makes this change when the Next.js website is +running in development mode (and the change is not needed for production sites). +* The options to the DrupalClient.preview() method were previously ignored. The +options are now passed to the NextApiResponse.setDraftMode() method and their +TypeScript definition have now changed to match the options parameter of the +setDraftMode method. +* DrupalClient previously had a debug property that indicated if debugging was +enabled. This property has been removed and replaced with a debug() method that +accepts a string and logs it as a debug message if debugging is enabled. + + + + + +# [2.0.0-alpha.0](https://github.com/chapter-three/next-drupal/compare/next-drupal@1.6.0...next-drupal@2.0.0-alpha.0) (2024-01-05) + + +### Bug Fixes + +* **next-drupal:** fix "403 forbidden" jest failures ([22d5742](https://github.com/chapter-three/next-drupal/commit/22d57420342b0573fdcf697c80f219f723adbc5e)), closes [#603](https://github.com/chapter-three/next-drupal/issues/603) +* **next-drupal:** fix broken build by using named Jsona export ([f2f398d](https://github.com/chapter-three/next-drupal/commit/f2f398de57366c17908b7b54301d5966f39e73bf)) + + +* feat(next-drupal)!: add App Router support for Server Components ([410a5df](https://github.com/chapter-three/next-drupal/commit/410a5dfec62df2c9de0adf37feaa615a1f35e98a)), closes [#442](https://github.com/chapter-three/next-drupal/issues/442) + + +### Features + +* **next-drupal:** add Next.js v14 support ([32a5a0a](https://github.com/chapter-three/next-drupal/commit/32a5a0a582c5faa93f8ac1a9633a89c60f5fd627)), closes [#578](https://github.com/chapter-three/next-drupal/issues/578) + + +### BREAKING CHANGES + +* The useMenu() client hook has moved out of the main entry point and into its own +entry point. Any import or require of that function needs to be updated: + +Old usage: +```js +import { useMenu } from "next-drupal" +``` + +New usage: +```js +import { useMenu } from "next-drupal/navigation" +``` + + + + + # [1.6.0](https://github.com/chapter-three/next-drupal/compare/next-drupal@1.5.1...next-drupal@1.6.0) (2022-12-06) **Note:** Version bump only for package next-drupal diff --git a/packages/next-drupal/jest.config.cjs b/packages/next-drupal/jest.config.cjs new file mode 100644 index 00000000..a7ccdfe7 --- /dev/null +++ b/packages/next-drupal/jest.config.cjs @@ -0,0 +1,35 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + setupFiles: ["dotenv/config"], + setupFilesAfterEnv: ["/jest.setup.ts"], + testMatch: ["**/tests/**/*.test.{ts,tsx}"], + transform: { + "^.+\\.tsx?$": [ + "ts-jest", + { + isolatedModules: true, + }, + ], + }, + testLocationInResults: true, + coverageProvider: "v8", + collectCoverage: true, + collectCoverageFrom: ["./src/**"], + coveragePathIgnorePatterns: [ + "./src/deprecated/*", + "./src/deprecated.ts", + "./src/navigation.ts", + "./src/types/*", + ], + coverageReporters: ["lcov", "text", "text-summary"], + coverageThreshold: { + global: { + statements: 100, + branches: 100, + functions: 100, + lines: 100, + }, + }, +} diff --git a/packages/next-drupal/jest.setup.ts b/packages/next-drupal/jest.setup.ts new file mode 100644 index 00000000..a5ef75aa --- /dev/null +++ b/packages/next-drupal/jest.setup.ts @@ -0,0 +1 @@ +import "isomorphic-fetch" diff --git a/packages/next-drupal/package.json b/packages/next-drupal/package.json index 37183d5d..d5234d6f 100644 --- a/packages/next-drupal/package.json +++ b/packages/next-drupal/package.json @@ -1,13 +1,48 @@ { "name": "next-drupal", "description": "Helpers for Next.js + Drupal.", - "version": "1.6.0", + "version": "2.0.0-alpha.1", "sideEffects": false, - "source": "src/index.ts", + "source": [ + "src/index.ts", + "src/navigation.ts" + ], "type": "module", "main": "dist/index.cjs", - "module": "dist/index.modern.js", - "types": "dist/types.d.ts", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./draft": { + "import": { + "types": "./dist/draft.d.ts", + "default": "./dist/draft.js" + }, + "require": { + "types": "./dist/draft.d.cts", + "default": "./dist/draft.cjs" + } + }, + "./navigation": { + "import": { + "types": "./dist/navigation.d.ts", + "default": "./dist/navigation.js" + }, + "require": { + "types": "./dist/navigation.d.cts", + "default": "./dist/navigation.cjs" + } + } + }, "license": "MIT", "publishConfig": { "access": "public" @@ -17,10 +52,9 @@ "url": "https://twitter.com/shadcn" }, "scripts": { - "prepare": "microbundle --no-compress --jsx React.createElement --format modern,cjs", - "dev": "microbundle watch --no-compress --jsx React.createElement --format modern,cjs", - "test": "jest", - "prepublishOnly": "yarn prepare" + "prepare": "tsup", + "dev": "tsup --watch", + "test": "jest --verbose" }, "keywords": [ "next.js", @@ -38,12 +72,11 @@ "directory": "packages/next-drupal" }, "devDependencies": { - "rollup-plugin-node-builtins": "^2.1.2", - "typescript": "^4.9.5" + "typescript": "^5.3.3" }, "dependencies": { "jsona": "^1.12.1", - "next": "^12.2.0 || ^13", + "next": "^13.4 || ^14", "node-cache": "^5.1.2", "qs": "^6.11.2", "react": "^17.0.2 || ^18", diff --git a/packages/next-drupal/src/client.ts b/packages/next-drupal/src/client.ts index 73141864..0e51bc01 100644 --- a/packages/next-drupal/src/client.ts +++ b/packages/next-drupal/src/client.ts @@ -1,3 +1,7 @@ +import { Jsona } from "jsona" +import { stringify } from "qs" +import { JsonApiErrors } from "./jsonapi-errors" +import { logger as defaultLogger } from "./logger" import type { GetStaticPathsContext, GetStaticPathsResult, @@ -5,42 +9,39 @@ import type { NextApiRequest, NextApiResponse, } from "next" -import { stringify } from "qs" -import Jsona from "jsona" - import type { - JsonApiResource, - Locale, AccessToken, - JsonApiResponse, - JsonApiWithLocaleOptions, - JsonApiParams, - DrupalTranslatedPath, - DrupalMenuLinkContent, - FetchOptions, - DrupalClientOptions, BaseUrl, - JsonApiWithAuthOptions, - PathPrefix, - JsonApiResourceWithPath, - PathAlias, - PreviewOptions, - JsonApiWithCacheOptions, - JsonApiCreateResourceBody, - JsonApiUpdateResourceBody, - DrupalClientAuthUsernamePassword, DrupalClientAuthAccessToken, DrupalClientAuthClientIdSecret, - JsonApiCreateFileResourceBody, - DrupalView, + DrupalClientAuthUsernamePassword, + DrupalClientOptions, DrupalFile, + DrupalMenuLinkContent, + DrupalTranslatedPath, + DrupalView, + FetchOptions, + JsonApiCreateFileResourceBody, + JsonApiCreateResourceBody, + JsonApiOptions, + JsonApiParams, + JsonApiResource, + JsonApiResourceWithPath, + JsonApiResponse, + JsonApiUpdateResourceBody, + JsonApiWithAuthOption, + JsonApiWithCacheOptions, + Locale, + PathAlias, + PathPrefix, } from "./types" -import { logger as defaultLogger } from "./logger" -import { JsonApiErrors } from "./jsonapi-errors" const DEFAULT_API_PREFIX = "/jsonapi" const DEFAULT_FRONT_PAGE = "/home" const DEFAULT_WITH_AUTH = false +export const DRAFT_DATA_COOKIE_NAME = "draftData" +// See https://vercel.com/docs/workflow-collaboration/draft-mode +export const DRAFT_MODE_COOKIE_NAME = "__prerender_bypass" // From simple_oauth. const DEFAULT_AUTH_URL = "/oauth/token" @@ -78,10 +79,10 @@ function isClientIdSecretAuth( export class DrupalClient { baseUrl: BaseUrl - debug: DrupalClientOptions["debug"] - frontPage: DrupalClientOptions["frontPage"] + private isDebugEnabled: DrupalClientOptions["debug"] + private serializer: DrupalClientOptions["serializer"] private cache: DrupalClientOptions["cache"] @@ -112,8 +113,6 @@ export class DrupalClient { private previewSecret?: DrupalClientOptions["previewSecret"] - private forceIframeSameSiteCookie?: DrupalClientOptions["forceIframeSameSiteCookie"] - /** * Instantiates a new DrupalClient. * @@ -141,7 +140,6 @@ export class DrupalClient { auth, previewSecret, accessToken, - forceIframeSameSiteCookie = false, throwJsonApiErrors = true, } = options @@ -149,7 +147,7 @@ export class DrupalClient { this.apiPrefix = apiPrefix this.serializer = serializer this.frontPage = frontPage - this.debug = debug + this.isDebugEnabled = !!debug this.useDefaultResourceTypeEntry = useDefaultResourceTypeEntry this.fetcher = fetcher this.auth = auth @@ -159,7 +157,6 @@ export class DrupalClient { this.previewSecret = previewSecret this.cache = cache this.accessToken = accessToken - this.forceIframeSameSiteCookie = forceIframeSameSiteCookie this.throwJsonApiErrors = throwJsonApiErrors // Do not throw errors in production. @@ -167,7 +164,7 @@ export class DrupalClient { this.throwJsonApiErrors = false } - this._debug("Debug mode is on.") + this.debug("Debug mode is on.") } set apiPrefix(apiPrefix: DrupalClientOptions["apiPrefix"]) { @@ -216,7 +213,6 @@ export class DrupalClient { this.tokenExpiresOn = Date.now() + token.expires_in * 1000 } - /* eslint-disable @typescript-eslint/no-explicit-any */ async fetch(input: RequestInfo, init?: FetchOptions): Promise { init = { ...init, @@ -230,7 +226,7 @@ export class DrupalClient { // Using the auth set on the client. // TODO: Abstract this to a re-usable. if (init?.withAuth) { - this._debug(`Using authenticated request.`) + this.debug(`Using authenticated request.`) if (init.withAuth === true) { if (typeof this._auth === "undefined") { @@ -242,15 +238,15 @@ export class DrupalClient { // By default, if withAuth is set to true, we use the auth configured // in the client constructor. if (typeof this._auth === "function") { - this._debug(`Using custom auth callback.`) + this.debug(`Using custom auth callback.`) init["headers"]["Authorization"] = this._auth() } else if (typeof this._auth === "string") { - this._debug(`Using custom authorization header.`) + this.debug(`Using custom authorization header.`) init["headers"]["Authorization"] = this._auth } else if (typeof this._auth === "object") { - this._debug(`Using custom auth credentials.`) + this.debug(`Using custom auth credentials.`) if (isBasicAuth(this._auth)) { const basic = Buffer.from( @@ -260,7 +256,7 @@ export class DrupalClient { init["headers"]["Authorization"] = `Basic ${basic}` } else if (isClientIdSecretAuth(this._auth)) { // Use the built-in client_credentials grant. - this._debug(`Using default auth (client_credentials).`) + this.debug(`Using default auth (client_credentials).`) // Fetch an access token and add it to the request. // Access token can be fetched from cache or using a custom auth method. @@ -268,22 +264,21 @@ export class DrupalClient { if (token) { init["headers"]["Authorization"] = `Bearer ${token.access_token}` } - } else if (isAccessTokenAuth(this._auth)) { - init["headers"][ - "Authorization" - ] = `${this._auth.token_type} ${this._auth.access_token}` + } /* c8 ignore next 4 */ else if (isAccessTokenAuth(this._auth)) { + init["headers"]["Authorization"] = + `${this._auth.token_type} ${this._auth.access_token}` } } } else if (typeof init.withAuth === "string") { - this._debug(`Using custom authorization header.`) + this.debug(`Using custom authorization header.`) init["headers"]["Authorization"] = init.withAuth - } else if (typeof init.withAuth === "function") { - this._debug(`Using custom authorization callback.`) + } /* c8 ignore next 4 */ else if (typeof init.withAuth === "function") { + this.debug(`Using custom authorization callback.`) init["headers"]["Authorization"] = init.withAuth() } else if (isBasicAuth(init.withAuth)) { - this._debug(`Using basic authorization header`) + this.debug(`Using basic authorization header.`) const basic = Buffer.from( `${init.withAuth.username}:${init.withAuth.password}` @@ -297,20 +292,19 @@ export class DrupalClient { if (token) { init["headers"]["Authorization"] = `Bearer ${token.access_token}` } - } else if (isAccessTokenAuth(init.withAuth)) { - init["headers"][ - "Authorization" - ] = `${init.withAuth.token_type} ${init.withAuth.access_token}` + } /* c8 ignore next 4 */ else if (isAccessTokenAuth(init.withAuth)) { + init["headers"]["Authorization"] = + `${init.withAuth.token_type} ${init.withAuth.access_token}` } } if (this.fetcher) { - this._debug(`Using custom fetcher.`) + this.debug(`Using custom fetcher, fetching: ${input}`) return await this.fetcher(input, init) } - this._debug(`Using default fetch (polyfilled by Next.js).`) + this.debug(`Using default fetch, fetching: ${input}`) return await fetch(input, init) } @@ -318,7 +312,7 @@ export class DrupalClient { async createResource( type: string, body: JsonApiCreateResourceBody, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise { options = { deserialize: true, @@ -328,13 +322,14 @@ export class DrupalClient { const apiPath = await this.getEntryForResourceType( type, - options?.locale !== options?.defaultLocale ? options.locale : undefined + options?.locale !== options?.defaultLocale + ? /* c8 ignore next */ options.locale + : undefined ) const url = this.buildUrl(apiPath, options?.params) - this._debug(`Creating resource of type ${type}.`) - this._debug(url.toString()) + this.debug(`Creating resource of type ${type}.`) // Add type to body. body.data.type = type @@ -345,19 +340,19 @@ export class DrupalClient { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const json = await response.json() - return options.deserialize ? this.deserialize(json) : json + return options.deserialize + ? this.deserialize(json) + : /* c8 ignore next */ json } async createFileResource( type: string, body: JsonApiCreateFileResourceBody, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise { options = { deserialize: true, @@ -377,8 +372,7 @@ export class DrupalClient { options?.params ) - this._debug(`Creating file resource for media of type ${type}.`) - this._debug(url.toString()) + this.debug(`Creating file resource for media of type ${type}.`) const response = await this.fetch(url.toString(), { method: "POST", @@ -391,9 +385,7 @@ export class DrupalClient { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const json = await response.json() @@ -404,7 +396,7 @@ export class DrupalClient { type: string, uuid: string, body: JsonApiUpdateResourceBody, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise { options = { deserialize: true, @@ -414,13 +406,14 @@ export class DrupalClient { const apiPath = await this.getEntryForResourceType( type, - options?.locale !== options?.defaultLocale ? options.locale : undefined + options?.locale !== options?.defaultLocale + ? /* c8 ignore next */ options.locale + : undefined ) const url = this.buildUrl(`${apiPath}/${uuid}`, options?.params) - this._debug(`Updating resource of type ${type} with id ${uuid}.`) - this._debug(url.toString()) + this.debug(`Updating resource of type ${type} with id ${uuid}.`) // Update body. body.data.type = type @@ -432,19 +425,19 @@ export class DrupalClient { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const json = await response.json() - return options.deserialize ? this.deserialize(json) : json + return options.deserialize + ? this.deserialize(json) + : /* c8 ignore next */ json } async deleteResource( type: string, uuid: string, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise { options = { withAuth: true, @@ -454,22 +447,21 @@ export class DrupalClient { const apiPath = await this.getEntryForResourceType( type, - options?.locale !== options?.defaultLocale ? options.locale : undefined + options?.locale !== options?.defaultLocale + ? /* c8 ignore next */ options.locale + : undefined ) const url = this.buildUrl(`${apiPath}/${uuid}`, options?.params) - this._debug(`Deleting resource of type ${type} with id ${uuid}.`) - this._debug(url.toString()) + this.debug(`Deleting resource of type ${type} with id ${uuid}.`) const response = await this.fetch(url.toString(), { method: "DELETE", withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) return response.status === 204 } @@ -477,9 +469,7 @@ export class DrupalClient { async getResource( type: string, uuid: string, - options?: JsonApiWithLocaleOptions & - JsonApiWithAuthOptions & - JsonApiWithCacheOptions + options?: JsonApiOptions & JsonApiWithCacheOptions ): Promise { options = { deserialize: true, @@ -489,11 +479,12 @@ export class DrupalClient { ...options, } + /* c8 ignore next 11 */ if (options.withCache) { const cached = (await this.cache.get(options.cacheKey)) as string if (cached) { - this._debug(`Returning cached resource ${type} with id ${uuid}`) + this.debug(`Returning cached resource ${type} with id ${uuid}.`) const json = JSON.parse(cached) @@ -508,19 +499,17 @@ export class DrupalClient { const url = this.buildUrl(`${apiPath}/${uuid}`, options?.params) - this._debug(`Fetching resource ${type} with id ${uuid}.`) - this._debug(url.toString()) + this.debug(`Fetching resource ${type} with id ${uuid}.`) const response = await this.fetch(url.toString(), { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const json = await response.json() + /* c8 ignore next 3 */ if (options.withCache) { await this.cache.set(options.cacheKey, JSON.stringify(json)) } @@ -534,8 +523,7 @@ export class DrupalClient { options?: { pathPrefix?: PathPrefix isVersionable?: boolean - } & JsonApiWithLocaleOptions & - JsonApiWithAuthOptions + } & JsonApiOptions ): Promise { const type = typeof input === "string" ? input : input.jsonapi.resourceName @@ -582,6 +570,7 @@ export class DrupalClient { // When we try to translate /es/example, decoupled router will properly // translate to the untranslated version and set the locale to es. // However a subrequests to /es/subrequests for decoupled router will fail. + /* c8 ignore next 3 */ if (context.locale && input.entity.langcode !== context.locale) { context.locale = input.entity.langcode } @@ -616,8 +605,7 @@ export class DrupalClient { path: string, options?: { isVersionable?: boolean - } & JsonApiWithLocaleOptions & - JsonApiWithAuthOptions + } & JsonApiOptions ): Promise { options = { deserialize: true, @@ -636,7 +624,7 @@ export class DrupalClient { options.defaultLocale && path.indexOf(options.locale) !== 1 ) { - path = path === "/" ? path : path.replace(/^\/+/, "") + path = path === "/" ? /* c8 ignore next */ path : path.replace(/^\/+/, "") path = this.getPathFromContext({ params: { slug: [path] }, locale: options.locale, @@ -691,6 +679,8 @@ export class DrupalClient { _format: "json", }) + this.debug(`Fetching resource by path, ${path}.`) + const response = await this.fetch(url.toString(), { method: "POST", credentials: "include", @@ -725,8 +715,7 @@ export class DrupalClient { type: string, options?: { deserialize?: boolean - } & JsonApiWithLocaleOptions & - JsonApiWithAuthOptions + } & JsonApiOptions ): Promise { options = { withAuth: this.withAuth, @@ -743,16 +732,13 @@ export class DrupalClient { ...options?.params, }) - this._debug(`Fetching resource collection of type ${type}`) - this._debug(url.toString()) + this.debug(`Fetching resource collection of type ${type}.`) const response = await this.fetch(url.toString(), { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const json = await response.json() @@ -764,8 +750,7 @@ export class DrupalClient { context: GetStaticPropsContext, options?: { deserialize?: boolean - } & JsonApiWithLocaleOptions & - JsonApiWithAuthOptions + } & JsonApiOptions ): Promise { options = { deserialize: true, @@ -788,7 +773,7 @@ export class DrupalClient { options?: { params?: JsonApiParams pathPrefix?: PathPrefix - } & JsonApiWithAuthOptions + } & JsonApiWithAuthOption ): Promise["paths"]> { options = { withAuth: this.withAuth, @@ -903,8 +888,8 @@ export class DrupalClient { async translatePath( path: string, - options?: JsonApiWithAuthOptions - ): Promise { + options?: JsonApiWithAuthOption + ): Promise { options = { withAuth: this.withAuth, ...options, @@ -914,6 +899,8 @@ export class DrupalClient { path, }) + this.debug(`Fetching translated path, ${path}.`) + const response = await this.fetch(url.toString(), { withAuth: options.withAuth, }) @@ -934,8 +921,8 @@ export class DrupalClient { context: GetStaticPropsContext, options?: { pathPrefix?: PathPrefix - } & JsonApiWithAuthOptions - ): Promise { + } & JsonApiWithAuthOption + ): Promise { options = { pathPrefix: "/", ...options, @@ -994,6 +981,8 @@ export class DrupalClient { ) try { + this.debug(`Fetching JSON:API index.`) + const response = await this.fetch(url.toString(), { // As per https://www.drupal.org/node/2984034 /jsonapi is public. withAuth: false, @@ -1040,6 +1029,7 @@ export class DrupalClient { const pattern = `^\\/${locale}\\/` const path = href.replace(this.baseUrl, "") + /* c8 ignore next 3 */ if (!new RegExp(pattern, "i").test(path)) { return `${this.baseUrl}/${locale}${path}` } @@ -1048,69 +1038,126 @@ export class DrupalClient { return href } - async preview( - request?: NextApiRequest, - response?: NextApiResponse, - options?: PreviewOptions - ) { - const { slug, resourceVersion, plugin } = request.query + async validateDraftUrl(searchParams: URLSearchParams): Promise { + const slug = searchParams.get("slug") - try { - // Always clear preview data to handle different scopes. - response.clearPreviewData() + this.debug(`Fetching draft url validation for ${slug}.`) - // Validate the preview url. - const validateUrl = this.buildUrl("/next/preview-url") - const result = await this.fetch(validateUrl.toString(), { + // Fetch the headless CMS to check if the provided `slug` exists + let response: Response + try { + // Validate the draft url. + const validateUrl = this.buildUrl("/next/draft-url").toString() + response = await this.fetch(validateUrl, { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify(request.query), + body: JSON.stringify(Object.fromEntries(searchParams.entries())), }) + } catch (error) { + response = new Response(JSON.stringify({ message: error.message }), { + status: 401, + }) + } - if (!result.ok) { - response.statusCode = result.status + this.debug( + response.status !== 200 + ? `Could not validate slug, ${slug}` + : `Validated slug, ${slug}` + ) - return response.json(await result.json()) - } + return response + } - const validationPayload = await result.json() + async preview( + request: NextApiRequest, + response: NextApiResponse, + options?: Parameters[0] + ) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { slug, resourceVersion, plugin, secret, scope, ...draftData } = + request.query + const useDraftMode = options?.enable - response.setPreviewData({ + try { + // Always clear preview data to handle different scopes. + response.clearPreviewData() + + // Validate the preview url. + const result = await this.validateDraftUrl( + new URL(request.url, `http://${request.headers.host}`).searchParams + ) + + const validationPayload = await result.json() + const previewData = { resourceVersion, plugin, ...validationPayload, - }) + } + + if (!result.ok) { + this.debug(`Draft url validation error: ${validationPayload.message}`) + response.statusCode = result.status + return response.json(validationPayload) + } + + // Optionally turn on draft mode. + if (useDraftMode) { + response.setDraftMode(options) + } + + // Turns on preview mode and adds preview data to Next.js' static context. + response.setPreviewData(previewData) // Fix issue with cookie. // See https://github.com/vercel/next.js/discussions/32238. // See https://github.com/vercel/next.js/blob/d895a50abbc8f91726daa2d7ebc22c58f58aabbb/packages/next/server/api-utils/node.ts#L504. - if (this.forceIframeSameSiteCookie) { - const previous = response.getHeader("Set-Cookie") as string[] - previous.forEach((cookie, index) => { - previous[index] = cookie.replace( - "SameSite=Lax", - "SameSite=None;Secure" - ) - }) - response.setHeader(`Set-Cookie`, previous) + const cookies = (response.getHeader("Set-Cookie") as string[]).map( + (cookie) => cookie.replace("SameSite=Lax", "SameSite=None; Secure") + ) + if (useDraftMode) { + // Adds preview data for use in app router pages. + cookies.push( + `${DRAFT_DATA_COOKIE_NAME}=${encodeURIComponent( + JSON.stringify({ slug, resourceVersion, ...draftData }) + )}; Path=/; HttpOnly; SameSite=None; Secure` + ) } + response.setHeader("Set-Cookie", cookies) - // We can safely redirect to the slug since this has been validated on the server. + // We can safely redirect to the slug since this has been validated on the + // server. response.writeHead(307, { Location: slug }) + this.debug(`${useDraftMode ? "Draft" : "Preview"} mode enabled.`) + return response.end() } catch (error) { + this.debug(`Preview failed: ${error.message}`) return response.status(422).end() } } + async previewDisable(request: NextApiRequest, response: NextApiResponse) { + // Disable both preview and draft modes. + response.clearPreviewData() + response.setDraftMode({ enable: false }) + + // Delete the draft data cookie. + const cookies = response.getHeader("Set-Cookie") as string[] + cookies.push( + `${DRAFT_DATA_COOKIE_NAME}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=None; Secure` + ) + response.setHeader("Set-Cookie", cookies) + + response.writeHead(307, { Location: "/" }) + response.end() + } + async getMenu( name: string, - options?: JsonApiWithLocaleOptions & - JsonApiWithAuthOptions & - JsonApiWithCacheOptions + options?: JsonApiOptions & JsonApiWithCacheOptions ): Promise<{ items: T[] tree: T[] @@ -1123,11 +1170,12 @@ export class DrupalClient { ...options, } + /* c8 ignore next 9 */ if (options.withCache) { const cached = (await this.cache.get(options.cacheKey)) as string if (cached) { - this._debug(`Returning cached menu items for ${name}`) + this.debug(`Returning cached menu items for ${name}.`) return JSON.parse(cached) } } @@ -1142,20 +1190,19 @@ export class DrupalClient { options.params ) - this._debug(`Fetching menu items for ${name}.`) - this._debug(url.toString()) + this.debug(`Fetching menu items for ${name}.`) const response = await this.fetch(url.toString(), { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const data = await response.json() - const items = options.deserialize ? this.deserialize(data) : data + const items = options.deserialize + ? this.deserialize(data) + : /* c8 ignore next */ data const { items: tree } = this.buildMenuTree(items) @@ -1164,6 +1211,7 @@ export class DrupalClient { tree, } + /* c8 ignore next 3 */ if (options.withCache) { await this.cache.set(options.cacheKey, JSON.stringify(menu)) } @@ -1195,7 +1243,7 @@ export class DrupalClient { async getView( name: string, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise> { options = { withAuth: this.withAuth, @@ -1216,13 +1264,13 @@ export class DrupalClient { options.params ) + this.debug(`Fetching view, ${viewId}.${displayId}.`) + const response = await this.fetch(url.toString(), { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const data = await response.json() @@ -1238,7 +1286,7 @@ export class DrupalClient { async getSearchIndex( name: string, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise { options = { withAuth: this.withAuth, @@ -1256,13 +1304,13 @@ export class DrupalClient { options.params ) + this.debug(`Fetching search index, ${name}.`) + const response = await this.fetch(url.toString(), { withAuth: options.withAuth, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const json = await response.json() @@ -1272,7 +1320,7 @@ export class DrupalClient { async getSearchIndexFromContext( name: string, context: GetStaticPropsContext, - options?: JsonApiWithLocaleOptions & JsonApiWithAuthOptions + options?: JsonApiOptions ): Promise { return await this.getSearchIndex(name, { ...options, @@ -1327,18 +1375,18 @@ export class DrupalClient { const clientId = opts?.clientId || this._auth.clientId const clientSecret = opts?.clientSecret || this._auth.clientSecret - const url = this.buildUrl(opts?.url || this._auth.url || DEFAULT_AUTH_URL) + const url = this.buildUrl(opts?.url || this._auth.url) if ( this.accessTokenScope === opts?.scope && this._token && Date.now() < this.tokenExpiresOn ) { - this._debug(`Using existing access token.`) + this.debug(`Using existing access token.`) return this._token } - this._debug(`Fetching new access token.`) + this.debug(`Fetching new access token.`) const basic = Buffer.from(`${clientId}:${clientSecret}`).toString("base64") @@ -1347,7 +1395,7 @@ export class DrupalClient { if (opts?.scope) { body = `${body}&scope=${opts.scope}` - this._debug(`Using scope: ${opts.scope}`) + this.debug(`Using scope: ${opts.scope}`) } const response = await this.fetch(url.toString(), { @@ -1360,14 +1408,10 @@ export class DrupalClient { body, }) - if (!response?.ok) { - await this.handleJsonApiErrors(response) - } + await this.throwIfJsonApiErrors(response) const result: AccessToken = await response.json() - this._debug(result) - this.token = result this.accessTokenScope = opts?.scope @@ -1415,13 +1459,13 @@ export class DrupalClient { return message } - private _debug(message) { - !!this.debug && this.logger.debug(message) + debug(message) { + this.isDebugEnabled && this.logger.debug(message) } // Error handling. - // If throwErrors is enable, we show errors in the Next.js overlay. - // Otherwise we log the errors even if debugging is turned off. + // If throwErrors is enabled, we show errors in the Next.js overlay. + // Otherwise, we log the errors even if debugging is turned off. // In production, errors are always logged never thrown. private throwError(error: Error) { if (!this.throwJsonApiErrors) { @@ -1431,7 +1475,7 @@ export class DrupalClient { throw error } - private async handleJsonApiErrors(response: Response) { + private async throwIfJsonApiErrors(response: Response) { if (!response?.ok) { const errors = await this.getErrorsFromResponse(response) throw new JsonApiErrors(errors, response.status) @@ -1440,7 +1484,7 @@ export class DrupalClient { private getAuthFromContextAndOptions( context: GetStaticPropsContext, - options: JsonApiWithAuthOptions + options: JsonApiWithAuthOption ) { // If not in preview or withAuth is provided, use that. if (!context.preview) { diff --git a/packages/next-drupal/src/deprecated.ts b/packages/next-drupal/src/deprecated.ts new file mode 100644 index 00000000..8693c514 --- /dev/null +++ b/packages/next-drupal/src/deprecated.ts @@ -0,0 +1,19 @@ +export * from "./deprecated/get-access-token" +export * from "./deprecated/get-menu" +export * from "./deprecated/get-paths" +export * from "./deprecated/get-resource-collection" +export * from "./deprecated/preview" +export * from "./deprecated/get-resource-type" +export * from "./deprecated/get-resource" +export * from "./deprecated/get-search-index" +export * from "./deprecated/get-view" +export * from "./deprecated/translate-path" +export { + deserialize, + buildUrl, + getJsonApiIndex, + getJsonApiPathForResourceType, + syncDrupalPreviewRoutes, +} from "./deprecated/utils" + +export type * from "./types/deprecated" diff --git a/packages/next-drupal/src/get-access-token.ts b/packages/next-drupal/src/deprecated/get-access-token.ts similarity index 95% rename from packages/next-drupal/src/get-access-token.ts rename to packages/next-drupal/src/deprecated/get-access-token.ts index 2477e0c1..017a6660 100644 --- a/packages/next-drupal/src/get-access-token.ts +++ b/packages/next-drupal/src/deprecated/get-access-token.ts @@ -1,5 +1,5 @@ import { cache } from "./get-cache" -import { AccessToken } from "./types" +import type { AccessToken } from "../types" const CACHE_KEY = "NEXT_DRUPAL_ACCESS_TOKEN" diff --git a/packages/next-drupal/src/get-cache.ts b/packages/next-drupal/src/deprecated/get-cache.ts similarity index 100% rename from packages/next-drupal/src/get-cache.ts rename to packages/next-drupal/src/deprecated/get-cache.ts diff --git a/packages/next-drupal/src/get-menu.ts b/packages/next-drupal/src/deprecated/get-menu.ts similarity index 90% rename from packages/next-drupal/src/get-menu.ts rename to packages/next-drupal/src/deprecated/get-menu.ts index 96f8f0bf..17262968 100644 --- a/packages/next-drupal/src/get-menu.ts +++ b/packages/next-drupal/src/deprecated/get-menu.ts @@ -1,9 +1,6 @@ -import { - AccessToken, - DrupalMenuLinkContent, - JsonApiWithLocaleOptions, -} from "./types" import { buildHeaders, buildUrl, deserialize } from "./utils" +import type { AccessToken, DrupalMenuLinkContent } from "../types" +import type { JsonApiWithLocaleOptions } from "../types/deprecated" export async function getMenu( name: string, diff --git a/packages/next-drupal/src/get-paths.ts b/packages/next-drupal/src/deprecated/get-paths.ts similarity index 93% rename from packages/next-drupal/src/get-paths.ts rename to packages/next-drupal/src/deprecated/get-paths.ts index 5d6a3a75..a2bbfe01 100644 --- a/packages/next-drupal/src/get-paths.ts +++ b/packages/next-drupal/src/deprecated/get-paths.ts @@ -1,6 +1,6 @@ -import { GetStaticPathsContext, GetStaticPathsResult } from "next" import { getResourceCollection } from "./get-resource-collection" -import { AccessToken, JsonApiParams, Locale } from "./types" +import type { GetStaticPathsContext, GetStaticPathsResult } from "next" +import type { AccessToken, JsonApiParams, Locale } from "../types" export async function getPathsFromContext( types: string | string[], diff --git a/packages/next-drupal/src/get-resource-collection.ts b/packages/next-drupal/src/deprecated/get-resource-collection.ts similarity index 88% rename from packages/next-drupal/src/get-resource-collection.ts rename to packages/next-drupal/src/deprecated/get-resource-collection.ts index 121af63b..209cd3da 100644 --- a/packages/next-drupal/src/get-resource-collection.ts +++ b/packages/next-drupal/src/deprecated/get-resource-collection.ts @@ -1,16 +1,12 @@ -import { GetStaticPropsContext } from "next" -import { - AccessToken, - JsonApiParams, - JsonApiWithLocaleOptions, - JsonApiResource, -} from "./types" import { buildHeaders, buildUrl, deserialize, getJsonApiPathForResourceType, } from "./utils" +import type { GetStaticPropsContext } from "next" +import type { AccessToken, JsonApiParams, JsonApiResource } from "../types" +import type { JsonApiWithLocaleOptions } from "../types/deprecated" export async function getResourceCollection( type: string, diff --git a/packages/next-drupal/src/get-resource-type.ts b/packages/next-drupal/src/deprecated/get-resource-type.ts similarity index 80% rename from packages/next-drupal/src/get-resource-type.ts rename to packages/next-drupal/src/deprecated/get-resource-type.ts index dea05dd6..85f52044 100644 --- a/packages/next-drupal/src/get-resource-type.ts +++ b/packages/next-drupal/src/deprecated/get-resource-type.ts @@ -1,6 +1,6 @@ -import { GetStaticPropsContext } from "next" import { translatePathFromContext } from "./translate-path" -import { AccessToken } from "./types" +import type { GetStaticPropsContext } from "next" +import type { AccessToken } from "../types" export async function getResourceTypeFromContext( context: GetStaticPropsContext, diff --git a/packages/next-drupal/src/get-resource.ts b/packages/next-drupal/src/deprecated/get-resource.ts similarity index 96% rename from packages/next-drupal/src/get-resource.ts rename to packages/next-drupal/src/deprecated/get-resource.ts index 24517c4b..7da11f90 100644 --- a/packages/next-drupal/src/get-resource.ts +++ b/packages/next-drupal/src/deprecated/get-resource.ts @@ -1,11 +1,4 @@ -import { GetStaticPropsContext } from "next" import { stringify } from "qs" -import { - AccessToken, - JsonApiParams, - JsonApiWithLocaleOptions, - JsonApiResource, -} from "./types" import { buildHeaders, buildUrl, @@ -13,6 +6,9 @@ import { getJsonApiPathForResourceType, getPathFromContext, } from "./utils" +import type { GetStaticPropsContext } from "next" +import type { AccessToken, JsonApiParams, JsonApiResource } from "../types" +import type { JsonApiWithLocaleOptions } from "../types/deprecated" export async function getResourceFromContext( type: string, diff --git a/packages/next-drupal/src/get-search-index.ts b/packages/next-drupal/src/deprecated/get-search-index.ts similarity index 87% rename from packages/next-drupal/src/get-search-index.ts rename to packages/next-drupal/src/deprecated/get-search-index.ts index 573d75d9..f97d2faf 100644 --- a/packages/next-drupal/src/get-search-index.ts +++ b/packages/next-drupal/src/deprecated/get-search-index.ts @@ -1,6 +1,7 @@ -import { GetStaticPropsContext } from "next" -import { AccessToken, JsonApiResource, JsonApiWithLocaleOptions } from "./types" import { buildHeaders, buildUrl, deserialize } from "./utils" +import type { GetStaticPropsContext } from "next" +import type { AccessToken, JsonApiResource } from "../types" +import type { JsonApiWithLocaleOptions } from "../types/deprecated" export async function getSearchIndex( name: string, diff --git a/packages/next-drupal/src/get-view.ts b/packages/next-drupal/src/deprecated/get-view.ts similarity index 90% rename from packages/next-drupal/src/get-view.ts rename to packages/next-drupal/src/deprecated/get-view.ts index 47ff7a31..2b7cb0ca 100644 --- a/packages/next-drupal/src/get-view.ts +++ b/packages/next-drupal/src/deprecated/get-view.ts @@ -1,5 +1,6 @@ -import { AccessToken, JsonApiWithLocaleOptions } from "./types" import { buildHeaders, buildUrl, deserialize } from "./utils" +import type { AccessToken } from "../types" +import type { JsonApiWithLocaleOptions } from "../types/deprecated" export async function getView( name: string, diff --git a/packages/next-drupal/src/preview.ts b/packages/next-drupal/src/deprecated/preview.ts similarity index 93% rename from packages/next-drupal/src/preview.ts rename to packages/next-drupal/src/deprecated/preview.ts index 50340fd4..7e4d096f 100644 --- a/packages/next-drupal/src/preview.ts +++ b/packages/next-drupal/src/deprecated/preview.ts @@ -1,6 +1,6 @@ -import { NextApiRequest, NextApiResponse } from "next" import { getResourceByPath } from "./get-resource" -import { JsonApiWithLocaleOptions } from "./types" +import type { NextApiRequest, NextApiResponse } from "next" +import type { JsonApiWithLocaleOptions } from "../types/deprecated" interface PreviewOptions { errorMessages?: { diff --git a/packages/next-drupal/src/translate-path.ts b/packages/next-drupal/src/deprecated/translate-path.ts similarity index 88% rename from packages/next-drupal/src/translate-path.ts rename to packages/next-drupal/src/deprecated/translate-path.ts index c93d38c6..0651957d 100644 --- a/packages/next-drupal/src/translate-path.ts +++ b/packages/next-drupal/src/deprecated/translate-path.ts @@ -1,6 +1,6 @@ -import { GetStaticPropsContext } from "next" -import { AccessToken, DrupalTranslatedPath } from "./types" import { buildHeaders, buildUrl, getPathFromContext } from "./utils" +import type { GetStaticPropsContext } from "next" +import type { AccessToken, DrupalTranslatedPath } from "../types" export async function translatePath( path: string, diff --git a/packages/next-drupal/src/use-menu.tsx b/packages/next-drupal/src/deprecated/use-menu.ts similarity index 73% rename from packages/next-drupal/src/use-menu.tsx rename to packages/next-drupal/src/deprecated/use-menu.ts index 0eefdf23..25c82c2d 100644 --- a/packages/next-drupal/src/use-menu.tsx +++ b/packages/next-drupal/src/deprecated/use-menu.ts @@ -1,8 +1,7 @@ -import * as React from "react" import { useRouter } from "next/router" - +import { useEffect, useState } from "react" import { getMenu } from "./get-menu" -import { DrupalMenuLinkContent } from "./types" +import type { DrupalMenuLinkContent } from "../types" export function useMenu( name: string @@ -13,14 +12,14 @@ export function useMenu( isLoading: boolean } { const router = useRouter() - const [data, setData] = React.useState<{ + const [data, setData] = useState<{ items: T[] tree: T[] }>(null) - const [error, setError] = React.useState(null) - const [isLoading, setIsLoading] = React.useState(false) + const [error, setError] = useState(null) + const [isLoading, setIsLoading] = useState(false) - React.useEffect(() => { + useEffect(() => { const fetchMenuItems = async () => { setIsLoading(true) try { diff --git a/packages/next-drupal/src/utils.ts b/packages/next-drupal/src/deprecated/utils.ts similarity index 91% rename from packages/next-drupal/src/utils.ts rename to packages/next-drupal/src/deprecated/utils.ts index eedfe42e..8e86f6b9 100644 --- a/packages/next-drupal/src/utils.ts +++ b/packages/next-drupal/src/deprecated/utils.ts @@ -1,8 +1,8 @@ -import { GetStaticPropsContext } from "next" -import Jsona from "jsona" -import { getAccessToken } from "./get-access-token" -import { AccessToken, Locale } from "./types" +import { Jsona } from "jsona" import { stringify } from "qs" +import { getAccessToken } from "./get-access-token" +import type { GetStaticPropsContext } from "next" +import type { AccessToken, Locale } from "../types" const JSONAPI_PREFIX = process.env.DRUPAL_JSONAPI_PREFIX || "/jsonapi" @@ -89,9 +89,8 @@ export async function buildHeaders({ // This reduces the number of OAuth call to the Drupal server. // Intentionally marked as unstable for now. if (process.env.UNSTABLE_DRUPAL_ACCESS_TOKEN) { - headers[ - "Authorization" - ] = `Bearer ${process.env.UNSTABLE_DRUPAL_ACCESS_TOKEN}` + headers["Authorization"] = + `Bearer ${process.env.UNSTABLE_DRUPAL_ACCESS_TOKEN}` return headers } @@ -122,8 +121,8 @@ export function getPathFromContext( return !slug ? process.env.DRUPAL_FRONT_PAGE : prefix - ? `${prefix}/${slug}` - : slug + ? `${prefix}/${slug}` + : slug } export function syncDrupalPreviewRoutes(path) { diff --git a/packages/next-drupal/src/draft.ts b/packages/next-drupal/src/draft.ts new file mode 100644 index 00000000..a598db72 --- /dev/null +++ b/packages/next-drupal/src/draft.ts @@ -0,0 +1,74 @@ +import { cookies, draftMode } from "next/headers" +import { redirect } from "next/navigation" +import { DRAFT_DATA_COOKIE_NAME, DRAFT_MODE_COOKIE_NAME } from "./client" +import type { NextRequest } from "next/server" +import type { DrupalClient } from "./client" + +export async function enableDraftMode( + request: NextRequest, + drupal: DrupalClient +): Promise { + // Validate the draft request. + const response = await drupal.validateDraftUrl(request.nextUrl.searchParams) + + // If validation fails, don't enable draft mode. + if (!response.ok) { + return response + } + + const searchParams = request.nextUrl.searchParams + const slug = searchParams.get("slug") + + // Enable Draft Mode by setting the cookie + draftMode().enable() + + // Override the default SameSite=lax. + // See https://github.com/vercel/next.js/issues/49927 + const draftModeCookie = cookies().get(DRAFT_MODE_COOKIE_NAME) + if (draftModeCookie) { + cookies().set({ + ...draftModeCookie, + sameSite: "none", + secure: true, + }) + } + + // Send Drupal's data to the draft-mode page. + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { secret, scope, plugin, ...draftData } = Object.fromEntries( + searchParams.entries() + ) + cookies().set({ + ...draftModeCookie, + name: DRAFT_DATA_COOKIE_NAME, + sameSite: "none", + secure: true, + value: JSON.stringify(draftData), + }) + + // Redirect to the path from the fetched post. We can safely redirect to the + // slug since this has been validated on the server. + redirect(slug) +} + +export function disableDraftMode() { + cookies().delete(DRAFT_DATA_COOKIE_NAME) + draftMode().disable() + + return new Response("Draft mode is disabled") +} + +export interface DraftData { + slug?: string + resourceVersion?: string +} + +export function getDraftData() { + let data: DraftData = {} + + if (draftMode().isEnabled && cookies().has(DRAFT_DATA_COOKIE_NAME)) { + data = JSON.parse(cookies().get(DRAFT_DATA_COOKIE_NAME)?.value || "{}") + } + + return data +} diff --git a/packages/next-drupal/src/index.ts b/packages/next-drupal/src/index.ts index bc107a47..860e0b0e 100644 --- a/packages/next-drupal/src/index.ts +++ b/packages/next-drupal/src/index.ts @@ -1,22 +1,6 @@ -export * from "./get-access-token" -export * from "./get-menu" -export * from "./get-paths" -export * from "./get-resource-collection" -export * from "./preview" -export * from "./get-resource-type" -export * from "./get-resource" -export * from "./get-search-index" -export * from "./get-view" -export * from "./types" -export * from "./use-menu" -export * from "./translate-path" -export { - deserialize, - buildUrl, - getJsonApiIndex, - getJsonApiPathForResourceType, - syncDrupalPreviewRoutes, -} from "./utils" - export * from "./client" export * from "./jsonapi-errors" + +export type * from "./types" + +export * from "./deprecated" diff --git a/packages/next-drupal/src/jsonapi-errors.ts b/packages/next-drupal/src/jsonapi-errors.ts index d049065b..e2c4c322 100644 --- a/packages/next-drupal/src/jsonapi-errors.ts +++ b/packages/next-drupal/src/jsonapi-errors.ts @@ -1,4 +1,17 @@ -import { JsonApiError } from "./types" +// https://jsonapi.org/format/#error-objects +export interface JsonApiError { + id?: string + status?: string + code?: string + title?: string + detail?: string + links?: JsonApiLinks +} + +// https://jsonapi.org/format/#document-links +export interface JsonApiLinks { + [key: string]: string | Record +} export class JsonApiErrors extends Error { errors: JsonApiError[] | string diff --git a/packages/next-drupal/src/logger.ts b/packages/next-drupal/src/logger.ts index 1f2a5380..c8dc2edd 100644 --- a/packages/next-drupal/src/logger.ts +++ b/packages/next-drupal/src/logger.ts @@ -1,17 +1,22 @@ -import { Logger } from "." +import type { Logger } from "./types" + +export const LOG_MESSAGE_PREFIX = "[next-drupal][log]:" +export const DEBUG_MESSAGE_PREFIX = "[next-drupal][debug]:" +export const WARN_MESSAGE_PREFIX = "[next-drupal][warn]:" +export const ERROR_MESSAGE_PREFIX = "[next-drupal][error]:" // Default logger. Uses console. export const logger: Logger = { log(message) { - console.log(`[next-drupal][log]:`, message) + console.log(LOG_MESSAGE_PREFIX, message) }, debug(message) { - console.debug(`[next-drupal][debug]:`, message) + console.debug(DEBUG_MESSAGE_PREFIX, message) }, warn(message) { - console.warn(`[next-drupal][debug]:`, message) + console.warn(WARN_MESSAGE_PREFIX, message) }, error(message) { - console.error(`[next-drupal][error]:`, message) + console.error(ERROR_MESSAGE_PREFIX, message) }, } diff --git a/packages/next-drupal/src/navigation.ts b/packages/next-drupal/src/navigation.ts new file mode 100644 index 00000000..33b89724 --- /dev/null +++ b/packages/next-drupal/src/navigation.ts @@ -0,0 +1 @@ +export { useMenu } from "./deprecated/use-menu" diff --git a/packages/next-drupal/src/types.ts b/packages/next-drupal/src/types.ts deleted file mode 100644 index ebd5cb62..00000000 --- a/packages/next-drupal/src/types.ts +++ /dev/null @@ -1,495 +0,0 @@ -export type DrupalClientOptions = { - /** - * Set the JSON:API prefix. - * - * * **Default value**: `/jsonapi` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#apiprefix) - */ - apiPrefix?: string - - /** - * Set debug to true to enable debug messages. - * - * * **Default value**: `false` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#debug) - */ - debug?: boolean - - /** - * Set the default frontPage. - * - * * **Default value**: `/home` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#frontpage) - */ - frontPage?: string - - /** - * Set custom headers for the fetcher. - * - * * **Default value**: { "Content-Type": "application/vnd.api+json", Accept: "application/vnd.api+json" } - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#headers) - */ - headers?: HeadersInit - - /** - * Override the default data serializer. You can use this to add your own JSON:API data deserializer. - * - * * **Default value**: `jsona` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#serializer) - */ - serializer?: Serializer - /** - * Override the default fetcher. Use this to add your own fetcher ex. axios. - * - * * **Default value**: `fetch` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#fetcher) - */ - fetcher?: Fetcher - - /** - * Override the default cache. - * - * * **Default value**: `node-cache` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#cache) - */ - cache?: DataCache - - /** - * If set to true, JSON:API errors are thrown in non-production environments. The errors are shown in the Next.js overlay. - * - * **Default value**: `true` - * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#throwjsonapierrors) - */ - throwJsonApiErrors?: boolean - - /** - * Override the default logger. You can use this to send logs to a third-party service. - * - * * **Default value**: `console` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#logger) - */ - logger?: Logger - - /** - * Override the default auth. You can use this to implement your own authentication mechanism. - * - * [Documentation](https://next-drupal.org/docs/client/configuration#auth) - */ - auth?: DrupalClientAuth - - /** - * Set whether the client should use authenticated requests by default. - * - * * **Default value**: `true` - * * **Required**: **No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#withauth) - */ - withAuth?: boolean - - /** - * By default, the client will make a request to JSON:API to retrieve the index. You can turn this off and use the default entry point from the resource name. - * - * * **Default value**: `false` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#auth) - */ - useDefaultResourceTypeEntry?: boolean - - /** - * The secret to use for preview mode. - * - * * **Default value**: `null` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#previewsecret) - */ - previewSecret?: string - - /** - * A long-lived access token you can set for the client. - * - * * **Default value**: `null` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#accesstoken) - */ - accessToken?: AccessToken - - /** - * The scope used for the current access token. - */ - accessTokenScope?: string - - /** - * If set to true, the preview cookie will be set with SameSite=None,Secure. - * - * * **Default value**: `false` - * * **Required**: *No* - * - * [Documentation](https://next-drupal.org/docs/client/configuration#forceiframesamesitecookie) - */ - forceIframeSameSiteCookie?: boolean -} - -export type DrupalClientAuth = - | DrupalClientAuthClientIdSecret - | DrupalClientAuthUsernamePassword - | DrupalClientAuthAccessToken - | (() => string) - | string - -export interface DrupalClientAuthUsernamePassword { - username: string - password: string -} - -export interface DrupalClientAuthClientIdSecret { - clientId: string - clientSecret: string - url?: string - scope?: string -} - -export type DrupalClientAuthAccessToken = AccessToken - -export interface Logger { - log(message): void - - debug(message): void - - warn(message): void - - error(message): void -} - -/** - * The baseUrl of your Drupal site. Do not add the /jsonapi suffix. - * - * **Required**: *yes* - * - * @example - * - * https://example.com - */ -export type BaseUrl = string - -export type Locale = string - -export type PathPrefix = string - -export type JsonApiOptions = { - deserialize?: boolean - params?: JsonApiParams -} - -export type JsonApiWithLocaleOptions = JsonApiOptions & - ( - | { - locale: Locale - defaultLocale: Locale - } - | { - locale?: undefined - defaultLocale?: never - } - ) - -export type JsonApiWithAuthOptions = { - withAuth?: boolean | DrupalClientAuth -} - -export type JsonApiWithCacheOptions = { - withCache?: boolean - cacheKey?: string -} - -// TODO: Properly type this. -/* eslint-disable @typescript-eslint/no-explicit-any */ -export type JsonApiParams = Record - -// https://jsonapi.org/format/#error-objects -export interface JsonApiError { - id?: string - status?: string - code?: string - title?: string - detail?: string - links?: JsonApiLinks -} - -// https://jsonapi.org/format/#document-links -export interface JsonApiLinks { - [key: string]: string | Record -} - -// TODO: any...ugh. -export interface JsonApiResponse extends Record { - jsonapi?: { - version: string - meta: Record[] - } - data: Record[] - errors: JsonApiError[] - meta: { - count: number - [key: string]: any - } - links?: JsonApiLinks - included?: Record[] -} - -export interface JsonApiResourceBodyRelationship { - data: { - type: string - id: string - } -} - -export interface JsonApiCreateResourceBody { - data: { - type?: string - attributes?: Record - relationships?: Record - } -} - -export interface JsonApiCreateFileResourceBody { - data: { - type?: string - attributes: { - type: string - field: string - filename: string - file: Buffer - } - } -} - -export interface JsonApiUpdateResourceBody { - data: { - type?: string - id?: string - attributes?: Record - relationships?: Record - } -} - -export interface JsonApiSearchApiResponse extends JsonApiResponse { - meta: JsonApiResponse["meta"] & { - facets?: DrupalSearchApiFacet[] - } -} - -export interface Serializer { - deserialize( - body: Record, - options?: Record - ): unknown -} - -export type Fetcher = WindowOrWorkerGlobalScope["fetch"] - -export interface DataCache { - get(key): Promise - - set(key, value, ttl?: number): Promise - - del?(keys): Promise -} - -export interface FetchOptions extends RequestInit { - withAuth?: boolean | DrupalClientAuth -} - -export interface DrupalSearchApiFacet { - id: string - label?: string - path?: string - terms?: { - url: string - values: { - value: string - label: string - active?: boolean - count?: number - } - }[] -} - -export interface DrupalTranslatedPath { - resolved: string - isHomePath: boolean - entity: { - canonical: string - type: string - bundle: string - id: string - uuid: string - langcode?: string - path?: string - } - label?: string - jsonapi?: { - individual: string - resourceName: string - pathPrefix: string - basePath: string - entryPoint: string - } - meta?: Record - redirect?: { - from: string - to: string - status: string - }[] -} - -export interface DrupalMenuLinkContent { - description: string - enabled: boolean - expanded: boolean - id: string - menu_name: string - meta: Record - options: Record - parent: string - provider: string - route: { - name: string - parameters: Record - } - title: string - type: string - url: string - weight: string - items?: DrupalMenuLinkContent[] -} - -export type AccessToken = { - token_type: string - expires_in: number - access_token: string - refresh_token?: string -} - -export type PathAlias = { - alias: string - pid: number - langcode: string -} - -/* eslint-disable @typescript-eslint/no-explicit-any */ -export interface JsonApiResource extends Record { - id: string - type: string - langcode: string - status: boolean -} - -export interface JsonApiResourceWithPath extends JsonApiResource { - path: PathAlias -} - -export interface PreviewOptions { - errorMessages?: { - secret?: string - slug?: string - } -} - -export type GetResourcePreviewUrlOptions = JsonApiWithLocaleOptions & { - isVersionable?: boolean -} - -export interface DrupalNode extends JsonApiResourceWithPath { - drupal_internal__nid: number - drupal_internal__vid: number - changed: string - created: string - title: string - default_langcode: boolean - sticky: boolean -} - -export interface DrupalParagraph extends JsonApiResource { - drupal_internal__id: number - drupal_internal__revision_id: number -} - -export interface DrupalBlock extends JsonApiResource { - info: string -} - -export interface DrupalMedia extends JsonApiResource { - drupal_internal__mid: string - drupal_internal__vid: string - changed: string - created: string - name: string -} - -export interface DrupalFile extends JsonApiResource { - drupal_internal__fid: string - changed: string - created: string - filename: string - uri: { - value: string - url: string - } - filesize: number - filemime: string - resourceIdObjMeta?: DrupalFileMeta -} - -export interface DrupalFileMeta { - alt?: string - title?: string - width: number - height: number -} - -export interface DrupalTaxonomyTerm extends JsonApiResourceWithPath { - drupal_internal__tid: string - changed: string - default_langcode: boolean - name: string - description: string - weight: number -} - -export interface DrupalUser extends JsonApiResourceWithPath { - drupal_internal__uid: string - changed: string - created: string - default_langcode: boolean - name: string -} - -/* eslint-disable @typescript-eslint/no-explicit-any */ -export interface DrupalView[]> { - id: string - results: T - meta: JsonApiResponse["meta"] - links: JsonApiResponse["links"] -} diff --git a/packages/next-drupal/src/types/client.ts b/packages/next-drupal/src/types/client.ts new file mode 100644 index 00000000..924caa53 --- /dev/null +++ b/packages/next-drupal/src/types/client.ts @@ -0,0 +1,197 @@ +export type DrupalClientOptions = { + /** + * Set the JSON:API prefix. + * + * * **Default value**: `/jsonapi` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#apiprefix) + */ + apiPrefix?: string + + /** + * Set debug to true to enable debug messages. + * + * * **Default value**: `false` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#debug) + */ + debug?: boolean + + /** + * Set the default frontPage. + * + * * **Default value**: `/home` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#frontpage) + */ + frontPage?: string + + /** + * Set custom headers for the fetcher. + * + * * **Default value**: { "Content-Type": "application/vnd.api+json", Accept: "application/vnd.api+json" } + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#headers) + */ + headers?: HeadersInit + + /** + * Override the default data serializer. You can use this to add your own JSON:API data deserializer. + * + * * **Default value**: `jsona` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#serializer) + */ + serializer?: Serializer + /** + * Override the default fetcher. Use this to add your own fetcher ex. axios. + * + * * **Default value**: `fetch` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#fetcher) + */ + fetcher?: Fetcher + + /** + * Override the default cache. + * + * * **Default value**: `node-cache` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#cache) + */ + cache?: DataCache + + /** + * If set to true, JSON:API errors are thrown in non-production environments. The errors are shown in the Next.js overlay. + * + * **Default value**: `true` + * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#throwjsonapierrors) + */ + throwJsonApiErrors?: boolean + + /** + * Override the default logger. You can use this to send logs to a third-party service. + * + * * **Default value**: `console` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#logger) + */ + logger?: Logger + + /** + * Override the default auth. You can use this to implement your own authentication mechanism. + * + * [Documentation](https://next-drupal.org/docs/client/configuration#auth) + */ + auth?: DrupalClientAuth + + /** + * Set whether the client should use authenticated requests by default. + * + * * **Default value**: `true` + * * **Required**: **No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#withauth) + */ + withAuth?: boolean + + /** + * By default, the client will make a request to JSON:API to retrieve the index. You can turn this off and use the default entry point from the resource name. + * + * * **Default value**: `false` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#auth) + */ + useDefaultResourceTypeEntry?: boolean + + /** + * The secret to use for preview mode. + * + * * **Default value**: `null` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#previewsecret) + */ + previewSecret?: string + + /** + * A long-lived access token you can set for the client. + * + * * **Default value**: `null` + * * **Required**: *No* + * + * [Documentation](https://next-drupal.org/docs/client/configuration#accesstoken) + */ + accessToken?: AccessToken + + /** + * The scope used for the current access token. + */ + accessTokenScope?: string +} + +export type DrupalClientAuth = + | DrupalClientAuthClientIdSecret + | DrupalClientAuthUsernamePassword + | DrupalClientAuthAccessToken + | (() => string) + | string + +export interface DrupalClientAuthUsernamePassword { + username: string + password: string +} + +export interface DrupalClientAuthClientIdSecret { + clientId: string + clientSecret: string + url?: string + scope?: string +} + +export type DrupalClientAuthAccessToken = AccessToken + +export type AccessToken = { + token_type: string + expires_in: number + access_token: string + refresh_token?: string +} + +export interface DataCache { + get(key): Promise + + set(key, value, ttl?: number): Promise + + del?(keys): Promise +} + +export type Fetcher = WindowOrWorkerGlobalScope["fetch"] + +export interface Logger { + log(message): void + + debug(message): void + + warn(message): void + + error(message): void +} + +export interface Serializer { + deserialize( + body: Record, + options?: Record + ): unknown +} diff --git a/packages/next-drupal/src/types/deprecated.ts b/packages/next-drupal/src/types/deprecated.ts new file mode 100644 index 00000000..e79c20c2 --- /dev/null +++ b/packages/next-drupal/src/types/deprecated.ts @@ -0,0 +1,3 @@ +import type { JsonApiOptions } from "./index" + +export type JsonApiWithLocaleOptions = Omit diff --git a/packages/next-drupal/src/types/drupal.ts b/packages/next-drupal/src/types/drupal.ts new file mode 100644 index 00000000..b2a77c93 --- /dev/null +++ b/packages/next-drupal/src/types/drupal.ts @@ -0,0 +1,154 @@ +import type { + JsonApiResource, + JsonApiResourceWithPath, + JsonApiResponse, +} from "./resource" + +export interface DrupalBlock extends JsonApiResource { + info: string +} + +export interface DrupalFile extends JsonApiResource { + drupal_internal__fid: string + changed: string + created: string + filename: string + uri: { + value: string + url: string + } + filesize: number + filemime: string + resourceIdObjMeta?: DrupalFileMeta +} + +export interface DrupalFileMeta { + alt?: string + title?: string + width: number + height: number +} + +export interface DrupalMedia extends JsonApiResource { + drupal_internal__mid: string + drupal_internal__vid: string + changed: string + created: string + name: string +} + +export interface DrupalMenuLinkContent { + description: string + enabled: boolean + expanded: boolean + id: string + menu_name: string + meta: Record + options: Record + parent: string + provider: string + route: { + name: string + parameters: Record + } + title: string + type: string + url: string + weight: string + items?: DrupalMenuLinkContent[] +} + +export interface DrupalNode extends JsonApiResourceWithPath { + drupal_internal__nid: number + drupal_internal__vid: number + changed: string + created: string + title: string + default_langcode: boolean + sticky: boolean +} + +export interface DrupalParagraph extends JsonApiResource { + drupal_internal__id: number + drupal_internal__revision_id: number +} + +export interface DrupalSearchApiJsonApiResponse extends JsonApiResponse { + meta: JsonApiResponse["meta"] & { + facets?: DrupalSearchApiFacet[] + } +} + +export interface DrupalSearchApiFacet { + id: string + label?: string + path?: string + terms?: { + url: string + values: { + value: string + label: string + active?: boolean + count?: number + } + }[] +} + +export interface DrupalTaxonomyTerm extends JsonApiResourceWithPath { + drupal_internal__tid: string + changed: string + default_langcode: boolean + name: string + description: string + weight: number +} + +export interface DrupalTranslatedPath { + resolved: string + isHomePath: boolean + entity: { + canonical: string + type: string + bundle: string + id: string + uuid: string + langcode?: string + path?: string + } + label?: string + jsonapi?: { + individual: string + resourceName: string + pathPrefix: string + basePath: string + entryPoint: string + } + meta?: Record + redirect?: { + from: string + to: string + status: string + }[] +} + +export interface DrupalUser extends JsonApiResourceWithPath { + drupal_internal__uid: string + changed: string + created: string + default_langcode: boolean + name: string +} + +/* eslint-disable @typescript-eslint/no-explicit-any */ +export interface DrupalView[]> { + id: string + results: T + meta: JsonApiResponse["meta"] + links: JsonApiResponse["links"] +} + +export type PathAlias = { + alias: string + pid: number + langcode: string +} diff --git a/packages/next-drupal/src/types/index.ts b/packages/next-drupal/src/types/index.ts new file mode 100644 index 00000000..f8194aaf --- /dev/null +++ b/packages/next-drupal/src/types/index.ts @@ -0,0 +1,4 @@ +export type * from "./client" +export type * from "./drupal" +export type * from "./options" +export type * from "./resource" diff --git a/packages/next-drupal/src/types/options.ts b/packages/next-drupal/src/types/options.ts new file mode 100644 index 00000000..c03e0d72 --- /dev/null +++ b/packages/next-drupal/src/types/options.ts @@ -0,0 +1,39 @@ +import type { DrupalClientAuth } from "./client" + +export type BaseUrl = string + +export type Locale = string + +export type PathPrefix = string + +export interface FetchOptions extends RequestInit { + withAuth?: boolean | DrupalClientAuth +} + +export type JsonApiOptions = { + deserialize?: boolean + params?: JsonApiParams +} & JsonApiWithAuthOption & + ( + | { + locale: Locale + defaultLocale: Locale + } + | { + locale?: undefined + defaultLocale?: never + } + ) + +export type JsonApiWithAuthOption = { + withAuth?: boolean | DrupalClientAuth +} + +export type JsonApiWithCacheOptions = { + withCache?: boolean + cacheKey?: string +} + +// TODO: Properly type this. +/* eslint-disable @typescript-eslint/no-explicit-any */ +export type JsonApiParams = Record diff --git a/packages/next-drupal/src/types/resource.ts b/packages/next-drupal/src/types/resource.ts new file mode 100644 index 00000000..99e5f28b --- /dev/null +++ b/packages/next-drupal/src/types/resource.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { JsonApiError, JsonApiLinks } from "../jsonapi-errors" +import type { PathAlias } from "./drupal" + +// TODO: any...ugh. +export interface JsonApiResponse extends Record { + jsonapi?: { + version: string + meta: Record[] + } + data: Record[] + errors: JsonApiError[] + meta: { + count: number + [key: string]: any + } + links?: JsonApiLinks + included?: Record[] +} + +export interface JsonApiResourceBodyRelationship { + data: { + type: string + id: string + } +} + +export interface JsonApiCreateResourceBody { + data: { + type?: string + attributes?: Record + relationships?: Record + } +} + +export interface JsonApiCreateFileResourceBody { + data: { + type?: string + attributes: { + type: string + field: string + filename: string + file: Buffer + } + } +} + +export interface JsonApiUpdateResourceBody { + data: { + type?: string + id?: string + attributes?: Record + relationships?: Record + } +} + +export interface JsonApiResource extends Record { + id: string + type: string + langcode: string + status: boolean +} + +export interface JsonApiResourceWithPath extends JsonApiResource { + path: PathAlias +} diff --git a/packages/next-drupal/tests/.eslintrc.json b/packages/next-drupal/tests/.eslintrc.json new file mode 100644 index 00000000..6da4ba50 --- /dev/null +++ b/packages/next-drupal/tests/.eslintrc.json @@ -0,0 +1,11 @@ +{ + "extends": ["../../../.eslintrc.json"], + "overrides": [ + { + "files": ["*.test.ts"], + "rules": { + "@typescript-eslint/ban-ts-comment": "off" + } + } + ] +} diff --git a/packages/next-drupal/tests/DrupalClient/__snapshots__/basic-methods.test.ts.snap b/packages/next-drupal/tests/DrupalClient/__snapshots__/basic-methods.test.ts.snap new file mode 100644 index 00000000..c1cac65e --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/__snapshots__/basic-methods.test.ts.snap @@ -0,0 +1,406 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`deserialize() allows for custom data serializer 1`] = ` +{ + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "title": "TITLE: Give it a go and grow your own herbs", +} +`; + +exports[`deserialize() deserializes JSON:API collection 1`] = ` +[ + { + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", + }, + }, + "title": "Give it a go and grow your own herbs", + "type": "node--article", + }, + { + "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", + }, + }, + "title": "Dairy-free and delicious milk chocolate", + "type": "node--article", + }, + { + "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", + }, + }, + "title": "The real deal for supermarket savvy shopping", + "type": "node--article", + }, + { + "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", + }, + }, + "title": "The Umami guide to our favorite mushrooms", + "type": "node--article", + }, + { + "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", + }, + }, + "title": "Let's hear it for carrots", + "type": "node--article", + }, + { + "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", + }, + }, + "title": "Baking mishaps - our troubleshooting tips", + "type": "node--article", + }, + { + "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", + }, + }, + "title": "Skip the spirits with delicious mocktails", + "type": "node--article", + }, + { + "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", + }, + }, + "title": "Give your oatmeal the ultimate makeover", + "type": "node--article", + }, +] +`; + +exports[`deserialize() deserializes JSON:API resource 1`] = ` +{ + "body": { + "format": "basic_html", + "processed": "

There's nothing like having your own supply of fresh herbs, readily available and close at hand to use while cooking. Whether you have a large garden or a small kitchen window sill, there's always enough room for something home grown.

+

Outdoors

+

Mint

+

Mint is a great plant to grow as it's hardy and can grow in almost any soil. Mint can grow wild, so keep it contained in a pot or it might spread and take over your whole garden.

+

Sage

+

Like mint, sage is another prolific growing plant and will take over your garden if you let it. Highly aromatic, the sage plant can be planted in a pot or flower bed in well drained soil. The best way to store the herb is to sun dry the leaves and store in a cool, dark cupboard in a sealed container.

+

Rosemary

+

Rosemary plants grow into lovely shrubs. Easily grown from cuttings, rosemary plants do not like freezing temperatures so keep pots or planted bushes near the home to shelter them from the cold. It grows well in pots as it likes dry soil, but can survive well in the ground too. If pruning rosemary to encourage it into a better shape, save the branches and hang them upside down to preserve the flavor and use in food.

+

Indoors

+

Basil

+

Perfect in sunny spot on a kitchen window sill. Basil is an annual plant, so will die off in the autumn, so it's a good idea to harvest it in the summer if you have an abundance and dry it. Picked basil stays fresh longer if it is placed in water (like fresh flowers). A great way to store basil is to make it into pesto!

+

Chives

+

A versatile herb, chives can grow well indoors. Ensure the plant is watered well, and gets plenty of light. Remember to regularly trim the chives. This prevents the flowers from developing and encourages new growth.

+

Coriander (Cilantro)

+

Coriander can grow indoors, but unlike the other herbs, it doesn't like full sun. If you have a south facing kitchen window, this isn't the place for it. Although not as thirsty as basil, coriander doesn't like dry soil so don't forget to water it! Cut coriander is best stored in the fridge.

+", + "summary": null, + "value": "

There's nothing like having your own supply of fresh herbs, readily available and close at hand to use while cooking. Whether you have a large garden or a small kitchen window sill, there's always enough room for something home grown.

+

Outdoors

+

Mint

+

Mint is a great plant to grow as it's hardy and can grow in almost any soil. Mint can grow wild, so keep it contained in a pot or it might spread and take over your whole garden.

+

Sage

+

Like mint, sage is another prolific growing plant and will take over your garden if you let it. Highly aromatic, the sage plant can be planted in a pot or flower bed in well drained soil. The best way to store the herb is to sun dry the leaves and store in a cool, dark cupboard in a sealed container.

+

Rosemary

+

Rosemary plants grow into lovely shrubs. Easily grown from cuttings, rosemary plants do not like freezing temperatures so keep pots or planted bushes near the home to shelter them from the cold. It grows well in pots as it likes dry soil, but can survive well in the ground too. If pruning rosemary to encourage it into a better shape, save the branches and hang them upside down to preserve the flavor and use in food.

+

Indoors

+

Basil

+

Perfect in sunny spot on a kitchen window sill. Basil is an annual plant, so will die off in the autumn, so it's a good idea to harvest it in the summer if you have an abundance and dry it. Picked basil stays fresh longer if it is placed in water (like fresh flowers). A great way to store basil is to make it into pesto!

+

Chives

+

A versatile herb, chives can grow well indoors. Ensure the plant is watered well, and gets plenty of light. Remember to regularly trim the chives. This prevents the flowers from developing and encourages new growth.

+

Coriander (Cilantro)

+

Coriander can grow indoors, but unlike the other herbs, it doesn't like full sun. If you have a south facing kitchen window, this isn't the place for it. Although not as thirsty as basil, coriander doesn't like dry soil so don't forget to water it! Cut coriander is best stored in the fridge.

+", + }, + "changed": "2022-03-21T10:52:42+00:00", + "content_translation_outdated": false, + "content_translation_source": "und", + "created": "2022-03-21T10:52:42+00:00", + "default_langcode": true, + "drupal_internal__nid": 10, + "drupal_internal__vid": 20, + "field_media_image": { + "id": "e5091a16-134e-400d-8393-cfe4eccbcaa2", + "resourceIdObjMeta": { + "drupal_internal__target_id": 10, + }, + "type": "media--image", + }, + "field_tags": [ + { + "changed": "2022-03-21T10:52:42+00:00", + "content_translation_created": "2022-03-21T10:52:42+00:00", + "content_translation_outdated": false, + "content_translation_source": "und", + "content_translation_uid": { + "id": "256a133b-0bd7-4426-a823-b8ce81e0d778", + "resourceIdObjMeta": { + "drupal_internal__target_id": 0, + }, + "type": "user--user", + }, + "default_langcode": true, + "description": null, + "drupal_internal__revision_id": 14, + "drupal_internal__tid": 14, + "id": "dcd81647-71b7-48cb-b555-e20322bcb7a7", + "langcode": "en", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags/dcd81647-71b7-48cb-b555-e20322bcb7a7?resourceVersion=id%3A14", + }, + }, + "name": "Grow your own", + "parent": [ + { + "id": "virtual", + "resourceIdObjMeta": { + "links": { + "help": { + "href": "https://www.drupal.org/docs/8/modules/json-api/core-concepts#virtual", + "meta": { + "about": "Usage and meaning of the 'virtual' resource identifier.", + }, + }, + }, + }, + "type": "taxonomy_term--tags", + }, + ], + "path": { + "alias": "/tags/grow-your-own", + "langcode": "en", + "pid": 27, + }, + "relationshipNames": [ + "vid", + "revision_user", + "parent", + "content_translation_uid", + ], + "resourceIdObjMeta": { + "drupal_internal__target_id": 14, + }, + "revision_created": "2022-03-21T10:52:42+00:00", + "revision_log_message": null, + "revision_translation_affected": true, + "revision_user": null, + "status": true, + "type": "taxonomy_term--tags", + "vid": { + "id": "b0442737-e5ff-4c7c-8c2b-c977886d6e73", + "resourceIdObjMeta": { + "drupal_internal__target_id": "tags", + }, + "type": "taxonomy_vocabulary--taxonomy_vocabulary", + }, + "weight": 0, + }, + { + "changed": "2022-03-21T10:52:42+00:00", + "content_translation_created": "2022-03-21T10:52:42+00:00", + "content_translation_outdated": false, + "content_translation_source": "und", + "content_translation_uid": { + "id": "256a133b-0bd7-4426-a823-b8ce81e0d778", + "resourceIdObjMeta": { + "drupal_internal__target_id": 0, + }, + "type": "user--user", + }, + "default_langcode": true, + "description": null, + "drupal_internal__revision_id": 23, + "drupal_internal__tid": 23, + "id": "60d20a4c-9d42-4b25-b717-3af3cba6abe8", + "langcode": "en", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags/60d20a4c-9d42-4b25-b717-3af3cba6abe8?resourceVersion=id%3A23", + }, + }, + "name": "Seasonal", + "parent": [ + { + "id": "virtual", + "resourceIdObjMeta": { + "links": { + "help": { + "href": "https://www.drupal.org/docs/8/modules/json-api/core-concepts#virtual", + "meta": { + "about": "Usage and meaning of the 'virtual' resource identifier.", + }, + }, + }, + }, + "type": "taxonomy_term--tags", + }, + ], + "path": { + "alias": "/tags/seasonal", + "langcode": "en", + "pid": 45, + }, + "relationshipNames": [ + "vid", + "revision_user", + "parent", + "content_translation_uid", + ], + "resourceIdObjMeta": { + "drupal_internal__target_id": 23, + }, + "revision_created": "2022-03-21T10:52:42+00:00", + "revision_log_message": null, + "revision_translation_affected": true, + "revision_user": null, + "status": true, + "type": "taxonomy_term--tags", + "vid": { + "id": "b0442737-e5ff-4c7c-8c2b-c977886d6e73", + "resourceIdObjMeta": { + "drupal_internal__target_id": "tags", + }, + "type": "taxonomy_vocabulary--taxonomy_vocabulary", + }, + "weight": 0, + }, + { + "changed": "2022-03-21T10:52:42+00:00", + "content_translation_created": "2022-03-21T10:52:42+00:00", + "content_translation_outdated": false, + "content_translation_source": "und", + "content_translation_uid": { + "id": "256a133b-0bd7-4426-a823-b8ce81e0d778", + "resourceIdObjMeta": { + "drupal_internal__target_id": 0, + }, + "type": "user--user", + }, + "default_langcode": true, + "description": null, + "drupal_internal__revision_id": 16, + "drupal_internal__tid": 16, + "id": "57a1d9f6-23a6-4215-a8a9-582202cd938d", + "langcode": "en", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags/57a1d9f6-23a6-4215-a8a9-582202cd938d?resourceVersion=id%3A16", + }, + }, + "name": "Herbs", + "parent": [ + { + "id": "virtual", + "resourceIdObjMeta": { + "links": { + "help": { + "href": "https://www.drupal.org/docs/8/modules/json-api/core-concepts#virtual", + "meta": { + "about": "Usage and meaning of the 'virtual' resource identifier.", + }, + }, + }, + }, + "type": "taxonomy_term--tags", + }, + ], + "path": { + "alias": "/tags/herbs", + "langcode": "en", + "pid": 31, + }, + "relationshipNames": [ + "vid", + "revision_user", + "parent", + "content_translation_uid", + ], + "resourceIdObjMeta": { + "drupal_internal__target_id": 16, + }, + "revision_created": "2022-03-21T10:52:42+00:00", + "revision_log_message": null, + "revision_translation_affected": true, + "revision_user": null, + "status": true, + "type": "taxonomy_term--tags", + "vid": { + "id": "b0442737-e5ff-4c7c-8c2b-c977886d6e73", + "resourceIdObjMeta": { + "drupal_internal__target_id": "tags", + }, + "type": "taxonomy_vocabulary--taxonomy_vocabulary", + }, + "weight": 0, + }, + ], + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "langcode": "en", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", + }, + }, + "moderation_state": "published", + "node_type": { + "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", + "resourceIdObjMeta": { + "drupal_internal__target_id": "article", + }, + "type": "node_type--node_type", + }, + "path": { + "alias": "/articles/give-it-a-go-and-grow-your-own-herbs", + "langcode": "en", + "pid": 85, + }, + "promote": true, + "relationshipNames": [ + "node_type", + "revision_uid", + "uid", + "field_media_image", + "field_tags", + ], + "revision_log": null, + "revision_timestamp": "2022-03-21T10:52:42+00:00", + "revision_translation_affected": null, + "revision_uid": { + "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", + "resourceIdObjMeta": { + "drupal_internal__target_id": 5, + }, + "type": "user--user", + }, + "status": true, + "sticky": false, + "title": "Give it a go and grow your own herbs", + "type": "node--article", + "uid": { + "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", + "resourceIdObjMeta": { + "drupal_internal__target_id": 5, + }, + "type": "user--user", + }, +} +`; diff --git a/packages/next-drupal/tests/__snapshots__/client.test.ts.snap b/packages/next-drupal/tests/DrupalClient/__snapshots__/fetch-related-methods.test.ts.snap similarity index 66% rename from packages/next-drupal/tests/__snapshots__/client.test.ts.snap rename to packages/next-drupal/tests/DrupalClient/__snapshots__/fetch-related-methods.test.ts.snap index 8198364d..120346a7 100644 --- a/packages/next-drupal/tests/__snapshots__/client.test.ts.snap +++ b/packages/next-drupal/tests/DrupalClient/__snapshots__/fetch-related-methods.test.ts.snap @@ -1,600 +1,10 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`buildStaticPathsFromResources it builds static paths from resources 1`] = ` -Array [ - Object { - "params": Object { - "slug": Array [ - "blog", - "post", - "one", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "blog", - "post", - "two", - ], - }, - }, -] -`; - -exports[`buildStaticPathsFromResources it builds static paths from resources 2`] = ` -Array [ - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "blog", - "post", - "one", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "blog", - "post", - "two", - ], - }, - }, -] -`; - -exports[`buildStaticPathsFromResources it builds static paths from resources with pathPrefix 1`] = ` -Array [ - Object { - "params": Object { - "slug": Array [ - "post", - "one", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "post", - "two", - ], - }, - }, -] -`; - -exports[`buildStaticPathsFromResources it builds static paths from resources with pathPrefix 2`] = ` -Array [ - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "one", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "two", - ], - }, - }, -] -`; - -exports[`buildStaticPathsParamsFromPaths it builds static paths from paths 1`] = ` -Array [ - Object { - "params": Object { - "slug": Array [ - "blog", - "post", - "one", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "blog", - "post", - "two", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "blog", - "post", - "three", - ], - }, - }, -] -`; - -exports[`buildStaticPathsParamsFromPaths it builds static paths from paths 2`] = ` -Array [ - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "blog", - "post", - "one", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "blog", - "post", - "two", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "blog", - "post", - "three", - ], - }, - }, -] -`; - -exports[`buildStaticPathsParamsFromPaths it builds static paths from paths with pathPrefix 1`] = ` -Array [ - Object { - "params": Object { - "slug": Array [ - "post", - "one", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "post", - "two", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "post", - ], - }, - }, -] -`; - -exports[`deserialize it allows for custom data serializer 1`] = ` -Object { - "id": "52837ad0-f218-46bd-a106-5710336b7053", - "title": "TITLE: Give it a go and grow your own herbs", -} -`; - -exports[`deserialize it deserializes JSON:API collection 1`] = ` -Array [ - Object { - "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", - }, - }, - "title": "Give it a go and grow your own herbs", - "type": "node--article", - }, - Object { - "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", - }, - }, - "title": "Dairy-free and delicious milk chocolate", - "type": "node--article", - }, - Object { - "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", - }, - }, - "title": "The real deal for supermarket savvy shopping", - "type": "node--article", - }, - Object { - "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", - }, - }, - "title": "The Umami guide to our favorite mushrooms", - "type": "node--article", - }, - Object { - "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", - }, - }, - "title": "Let's hear it for carrots", - "type": "node--article", - }, - Object { - "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", - }, - }, - "title": "Baking mishaps - our troubleshooting tips", - "type": "node--article", - }, - Object { - "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", - }, - }, - "title": "Skip the spirits with delicious mocktails", - "type": "node--article", - }, - Object { - "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", - }, - }, - "title": "Give your oatmeal the ultimate makeover", - "type": "node--article", - }, -] -`; - -exports[`deserialize it deserializes JSON:API resource 1`] = ` -Object { - "body": Object { - "format": "basic_html", - "processed": "

There's nothing like having your own supply of fresh herbs, readily available and close at hand to use while cooking. Whether you have a large garden or a small kitchen window sill, there's always enough room for something home grown.

-

Outdoors

-

Mint

-

Mint is a great plant to grow as it's hardy and can grow in almost any soil. Mint can grow wild, so keep it contained in a pot or it might spread and take over your whole garden.

-

Sage

-

Like mint, sage is another prolific growing plant and will take over your garden if you let it. Highly aromatic, the sage plant can be planted in a pot or flower bed in well drained soil. The best way to store the herb is to sun dry the leaves and store in a cool, dark cupboard in a sealed container.

-

Rosemary

-

Rosemary plants grow into lovely shrubs. Easily grown from cuttings, rosemary plants do not like freezing temperatures so keep pots or planted bushes near the home to shelter them from the cold. It grows well in pots as it likes dry soil, but can survive well in the ground too. If pruning rosemary to encourage it into a better shape, save the branches and hang them upside down to preserve the flavor and use in food.

-

Indoors

-

Basil

-

Perfect in sunny spot on a kitchen window sill. Basil is an annual plant, so will die off in the autumn, so it's a good idea to harvest it in the summer if you have an abundance and dry it. Picked basil stays fresh longer if it is placed in water (like fresh flowers). A great way to store basil is to make it into pesto!

-

Chives

-

A versatile herb, chives can grow well indoors. Ensure the plant is watered well, and gets plenty of light. Remember to regularly trim the chives. This prevents the flowers from developing and encourages new growth.

-

Coriander (Cilantro)

-

Coriander can grow indoors, but unlike the other herbs, it doesn't like full sun. If you have a south facing kitchen window, this isn't the place for it. Although not as thirsty as basil, coriander doesn't like dry soil so don't forget to water it! Cut coriander is best stored in the fridge.

-", - "summary": null, - "value": "

There's nothing like having your own supply of fresh herbs, readily available and close at hand to use while cooking. Whether you have a large garden or a small kitchen window sill, there's always enough room for something home grown.

-

Outdoors

-

Mint

-

Mint is a great plant to grow as it's hardy and can grow in almost any soil. Mint can grow wild, so keep it contained in a pot or it might spread and take over your whole garden.

-

Sage

-

Like mint, sage is another prolific growing plant and will take over your garden if you let it. Highly aromatic, the sage plant can be planted in a pot or flower bed in well drained soil. The best way to store the herb is to sun dry the leaves and store in a cool, dark cupboard in a sealed container.

-

Rosemary

-

Rosemary plants grow into lovely shrubs. Easily grown from cuttings, rosemary plants do not like freezing temperatures so keep pots or planted bushes near the home to shelter them from the cold. It grows well in pots as it likes dry soil, but can survive well in the ground too. If pruning rosemary to encourage it into a better shape, save the branches and hang them upside down to preserve the flavor and use in food.

-

Indoors

-

Basil

-

Perfect in sunny spot on a kitchen window sill. Basil is an annual plant, so will die off in the autumn, so it's a good idea to harvest it in the summer if you have an abundance and dry it. Picked basil stays fresh longer if it is placed in water (like fresh flowers). A great way to store basil is to make it into pesto!

-

Chives

-

A versatile herb, chives can grow well indoors. Ensure the plant is watered well, and gets plenty of light. Remember to regularly trim the chives. This prevents the flowers from developing and encourages new growth.

-

Coriander (Cilantro)

-

Coriander can grow indoors, but unlike the other herbs, it doesn't like full sun. If you have a south facing kitchen window, this isn't the place for it. Although not as thirsty as basil, coriander doesn't like dry soil so don't forget to water it! Cut coriander is best stored in the fridge.

-", - }, - "changed": "2022-03-21T10:52:42+00:00", - "content_translation_outdated": false, - "content_translation_source": "und", - "created": "2022-03-21T10:52:42+00:00", - "default_langcode": true, - "drupal_internal__nid": 10, - "drupal_internal__vid": 20, - "field_media_image": Object { - "id": "e5091a16-134e-400d-8393-cfe4eccbcaa2", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 10, - }, - "type": "media--image", - }, - "field_tags": Array [ - Object { - "changed": "2022-03-21T10:52:42+00:00", - "content_translation_created": "2022-03-21T10:52:42+00:00", - "content_translation_outdated": false, - "content_translation_source": "und", - "content_translation_uid": Object { - "id": "256a133b-0bd7-4426-a823-b8ce81e0d778", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 0, - }, - "type": "user--user", - }, - "default_langcode": true, - "description": null, - "drupal_internal__revision_id": 14, - "drupal_internal__tid": 14, - "id": "dcd81647-71b7-48cb-b555-e20322bcb7a7", - "langcode": "en", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags/dcd81647-71b7-48cb-b555-e20322bcb7a7?resourceVersion=id%3A14", - }, - }, - "name": "Grow your own", - "parent": Array [ - Object { - "id": "virtual", - "resourceIdObjMeta": Object { - "links": Object { - "help": Object { - "href": "https://www.drupal.org/docs/8/modules/json-api/core-concepts#virtual", - "meta": Object { - "about": "Usage and meaning of the 'virtual' resource identifier.", - }, - }, - }, - }, - "type": "taxonomy_term--tags", - }, - ], - "path": Object { - "alias": "/tags/grow-your-own", - "langcode": "en", - "pid": 27, - }, - "relationshipNames": Array [ - "vid", - "revision_user", - "parent", - "content_translation_uid", - ], - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 14, - }, - "revision_created": "2022-03-21T10:52:42+00:00", - "revision_log_message": null, - "revision_translation_affected": true, - "revision_user": null, - "status": true, - "type": "taxonomy_term--tags", - "vid": Object { - "id": "b0442737-e5ff-4c7c-8c2b-c977886d6e73", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": "tags", - }, - "type": "taxonomy_vocabulary--taxonomy_vocabulary", - }, - "weight": 0, - }, - Object { - "changed": "2022-03-21T10:52:42+00:00", - "content_translation_created": "2022-03-21T10:52:42+00:00", - "content_translation_outdated": false, - "content_translation_source": "und", - "content_translation_uid": Object { - "id": "256a133b-0bd7-4426-a823-b8ce81e0d778", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 0, - }, - "type": "user--user", - }, - "default_langcode": true, - "description": null, - "drupal_internal__revision_id": 23, - "drupal_internal__tid": 23, - "id": "60d20a4c-9d42-4b25-b717-3af3cba6abe8", - "langcode": "en", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags/60d20a4c-9d42-4b25-b717-3af3cba6abe8?resourceVersion=id%3A23", - }, - }, - "name": "Seasonal", - "parent": Array [ - Object { - "id": "virtual", - "resourceIdObjMeta": Object { - "links": Object { - "help": Object { - "href": "https://www.drupal.org/docs/8/modules/json-api/core-concepts#virtual", - "meta": Object { - "about": "Usage and meaning of the 'virtual' resource identifier.", - }, - }, - }, - }, - "type": "taxonomy_term--tags", - }, - ], - "path": Object { - "alias": "/tags/seasonal", - "langcode": "en", - "pid": 45, - }, - "relationshipNames": Array [ - "vid", - "revision_user", - "parent", - "content_translation_uid", - ], - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 23, - }, - "revision_created": "2022-03-21T10:52:42+00:00", - "revision_log_message": null, - "revision_translation_affected": true, - "revision_user": null, - "status": true, - "type": "taxonomy_term--tags", - "vid": Object { - "id": "b0442737-e5ff-4c7c-8c2b-c977886d6e73", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": "tags", - }, - "type": "taxonomy_vocabulary--taxonomy_vocabulary", - }, - "weight": 0, - }, - Object { - "changed": "2022-03-21T10:52:42+00:00", - "content_translation_created": "2022-03-21T10:52:42+00:00", - "content_translation_outdated": false, - "content_translation_source": "und", - "content_translation_uid": Object { - "id": "256a133b-0bd7-4426-a823-b8ce81e0d778", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 0, - }, - "type": "user--user", - }, - "default_langcode": true, - "description": null, - "drupal_internal__revision_id": 16, - "drupal_internal__tid": 16, - "id": "57a1d9f6-23a6-4215-a8a9-582202cd938d", - "langcode": "en", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags/57a1d9f6-23a6-4215-a8a9-582202cd938d?resourceVersion=id%3A16", - }, - }, - "name": "Herbs", - "parent": Array [ - Object { - "id": "virtual", - "resourceIdObjMeta": Object { - "links": Object { - "help": Object { - "href": "https://www.drupal.org/docs/8/modules/json-api/core-concepts#virtual", - "meta": Object { - "about": "Usage and meaning of the 'virtual' resource identifier.", - }, - }, - }, - }, - "type": "taxonomy_term--tags", - }, - ], - "path": Object { - "alias": "/tags/herbs", - "langcode": "en", - "pid": 31, - }, - "relationshipNames": Array [ - "vid", - "revision_user", - "parent", - "content_translation_uid", - ], - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 16, - }, - "revision_created": "2022-03-21T10:52:42+00:00", - "revision_log_message": null, - "revision_translation_affected": true, - "revision_user": null, - "status": true, - "type": "taxonomy_term--tags", - "vid": Object { - "id": "b0442737-e5ff-4c7c-8c2b-c977886d6e73", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": "tags", - }, - "type": "taxonomy_vocabulary--taxonomy_vocabulary", - }, - "weight": 0, - }, - ], - "id": "52837ad0-f218-46bd-a106-5710336b7053", - "langcode": "en", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", - }, - }, - "moderation_state": "published", - "node_type": Object { - "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": "article", - }, - "type": "node_type--node_type", - }, - "path": Object { - "alias": "/articles/give-it-a-go-and-grow-your-own-herbs", - "langcode": "en", - "pid": 85, - }, - "promote": true, - "relationshipNames": Array [ - "node_type", - "revision_uid", - "uid", - "field_media_image", - "field_tags", - ], - "revision_log": null, - "revision_timestamp": "2022-03-21T10:52:42+00:00", - "revision_translation_affected": null, - "revision_uid": Object { - "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 5, - }, - "type": "user--user", - }, - "status": true, - "sticky": false, - "title": "Give it a go and grow your own herbs", - "type": "node--article", - "uid": Object { - "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 5, - }, - "type": "user--user", - }, -} -`; - -exports[`fetch it allows fetching custom url 1`] = ` -Object { - "data": Object { - "attributes": Object { - "body": Object { +exports[`fetch() allows fetching custom url 1`] = ` +{ + "data": { + "attributes": { + "body": { "format": "basic_html", "processed": "

There's nothing like having your own supply of fresh herbs, readily available and close at hand to use while cooking. Whether you have a large garden or a small kitchen window sill, there's always enough room for something home grown.

Outdoors

@@ -639,7 +49,7 @@ Object { "drupal_internal__vid": 20, "langcode": "en", "moderation_state": "published", - "path": Object { + "path": { "alias": "/articles/give-it-a-go-and-grow-your-own-herbs", "langcode": "en", "pid": 85, @@ -653,109 +63,109 @@ Object { "title": "Give it a go and grow your own herbs", }, "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, - "relationships": Object { - "field_media_image": Object { - "data": Object { + "relationships": { + "field_media_image": { + "data": { "id": "e5091a16-134e-400d-8393-cfe4eccbcaa2", - "meta": Object { + "meta": { "drupal_internal__target_id": 10, }, "type": "media--image", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/field_media_image?resourceVersion=id%3A20", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/relationships/field_media_image?resourceVersion=id%3A20", }, }, }, - "field_tags": Object { - "data": Array [ - Object { + "field_tags": { + "data": [ + { "id": "dcd81647-71b7-48cb-b555-e20322bcb7a7", - "meta": Object { + "meta": { "drupal_internal__target_id": 14, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "60d20a4c-9d42-4b25-b717-3af3cba6abe8", - "meta": Object { + "meta": { "drupal_internal__target_id": 23, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "57a1d9f6-23a6-4215-a8a9-582202cd938d", - "meta": Object { + "meta": { "drupal_internal__target_id": 16, }, "type": "taxonomy_term--tags", }, ], - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/field_tags?resourceVersion=id%3A20", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/relationships/field_tags?resourceVersion=id%3A20", }, }, }, - "node_type": Object { - "data": Object { + "node_type": { + "data": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "meta": Object { + "meta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/node_type?resourceVersion=id%3A20", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/relationships/node_type?resourceVersion=id%3A20", }, }, }, - "revision_uid": Object { - "data": Object { + "revision_uid": { + "data": { "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", - "meta": Object { + "meta": { "drupal_internal__target_id": 5, }, "type": "user--user", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/revision_uid?resourceVersion=id%3A20", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/relationships/revision_uid?resourceVersion=id%3A20", }, }, }, - "uid": Object { - "data": Object { + "uid": { + "data": { "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", - "meta": Object { + "meta": { "drupal_internal__target_id": 5, }, "type": "user--user", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/uid?resourceVersion=id%3A20", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053/relationships/uid?resourceVersion=id%3A20", }, }, @@ -763,504 +173,504 @@ Object { }, "type": "node--article", }, - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053", }, }, } `; -exports[`getIndex it fetches the JSON:API index 1`] = ` -Object { - "data": Array [], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { +exports[`getIndex() fetches the JSON:API index 1`] = ` +{ + "data": [], + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "action--action": Object { + "links": { + "action--action": { "href": "https://tests.next-drupal.org/en/jsonapi/action/action", }, - "base_field_override--base_field_override": Object { + "base_field_override--base_field_override": { "href": "https://tests.next-drupal.org/en/jsonapi/base_field_override/base_field_override", }, - "block--block": Object { + "block--block": { "href": "https://tests.next-drupal.org/en/jsonapi/block/block", }, - "block_content--banner_block": Object { + "block_content--banner_block": { "href": "https://tests.next-drupal.org/en/jsonapi/block_content/banner_block", }, - "block_content--basic": Object { + "block_content--basic": { "href": "https://tests.next-drupal.org/en/jsonapi/block_content/basic", }, - "block_content--disclaimer_block": Object { + "block_content--disclaimer_block": { "href": "https://tests.next-drupal.org/en/jsonapi/block_content/disclaimer_block", }, - "block_content--footer_promo_block": Object { + "block_content--footer_promo_block": { "href": "https://tests.next-drupal.org/en/jsonapi/block_content/footer_promo_block", }, - "block_content_type--block_content_type": Object { + "block_content_type--block_content_type": { "href": "https://tests.next-drupal.org/en/jsonapi/block_content_type/block_content_type", }, - "configurable_language--configurable_language": Object { + "configurable_language--configurable_language": { "href": "https://tests.next-drupal.org/en/jsonapi/configurable_language/configurable_language", }, - "consumer--consumer": Object { + "consumer--consumer": { "href": "https://tests.next-drupal.org/en/jsonapi/consumer/consumer", }, - "contact_form--contact_form": Object { + "contact_form--contact_form": { "href": "https://tests.next-drupal.org/en/jsonapi/contact_form/contact_form", }, - "contact_message--feedback": Object { + "contact_message--feedback": { "href": "https://tests.next-drupal.org/en/jsonapi/contact_message/feedback", }, - "contact_message--personal": Object { + "contact_message--personal": { "href": "https://tests.next-drupal.org/en/jsonapi/contact_message/personal", }, - "date_format--date_format": Object { + "date_format--date_format": { "href": "https://tests.next-drupal.org/en/jsonapi/date_format/date_format", }, - "editor--editor": Object { + "editor--editor": { "href": "https://tests.next-drupal.org/en/jsonapi/editor/editor", }, - "entity_form_display--entity_form_display": Object { + "entity_form_display--entity_form_display": { "href": "https://tests.next-drupal.org/en/jsonapi/entity_form_display/entity_form_display", }, - "entity_form_mode--entity_form_mode": Object { + "entity_form_mode--entity_form_mode": { "href": "https://tests.next-drupal.org/en/jsonapi/entity_form_mode/entity_form_mode", }, - "entity_view_display--entity_view_display": Object { + "entity_view_display--entity_view_display": { "href": "https://tests.next-drupal.org/en/jsonapi/entity_view_display/entity_view_display", }, - "entity_view_mode--entity_view_mode": Object { + "entity_view_mode--entity_view_mode": { "href": "https://tests.next-drupal.org/en/jsonapi/entity_view_mode/entity_view_mode", }, - "facets_facet--facets_facet": Object { + "facets_facet--facets_facet": { "href": "https://tests.next-drupal.org/en/jsonapi/facets_facet/facets_facet", }, - "facets_facet_source--facets_facet_source": Object { + "facets_facet_source--facets_facet_source": { "href": "https://tests.next-drupal.org/en/jsonapi/facets_facet_source/facets_facet_source", }, - "field_config--field_config": Object { + "field_config--field_config": { "href": "https://tests.next-drupal.org/en/jsonapi/field_config/field_config", }, - "field_storage_config--field_storage_config": Object { + "field_storage_config--field_storage_config": { "href": "https://tests.next-drupal.org/en/jsonapi/field_storage_config/field_storage_config", }, - "file--file": Object { + "file--file": { "href": "https://tests.next-drupal.org/en/jsonapi/file/file", }, - "filter_format--filter_format": Object { + "filter_format--filter_format": { "href": "https://tests.next-drupal.org/en/jsonapi/filter_format/filter_format", }, - "image_style--image_style": Object { + "image_style--image_style": { "href": "https://tests.next-drupal.org/en/jsonapi/image_style/image_style", }, - "language_content_settings--language_content_settings": Object { + "language_content_settings--language_content_settings": { "href": "https://tests.next-drupal.org/en/jsonapi/language_content_settings/language_content_settings", }, - "media--audio": Object { + "media--audio": { "href": "https://tests.next-drupal.org/en/jsonapi/media/audio", }, - "media--document": Object { + "media--document": { "href": "https://tests.next-drupal.org/en/jsonapi/media/document", }, - "media--image": Object { + "media--image": { "href": "https://tests.next-drupal.org/en/jsonapi/media/image", }, - "media--remote_video": Object { + "media--remote_video": { "href": "https://tests.next-drupal.org/en/jsonapi/media/remote_video", }, - "media--video": Object { + "media--video": { "href": "https://tests.next-drupal.org/en/jsonapi/media/video", }, - "media_type--media_type": Object { + "media_type--media_type": { "href": "https://tests.next-drupal.org/en/jsonapi/media_type/media_type", }, - "menu--menu": Object { + "menu--menu": { "href": "https://tests.next-drupal.org/en/jsonapi/menu/menu", }, - "menu_link_content--menu_link_content": Object { + "menu_link_content--menu_link_content": { "href": "https://tests.next-drupal.org/en/jsonapi/menu_link_content/menu_link_content", }, - "next_entity_type_config--next_entity_type_config": Object { + "next_entity_type_config--next_entity_type_config": { "href": "https://tests.next-drupal.org/en/jsonapi/next_entity_type_config/next_entity_type_config", }, - "next_site--next_site": Object { + "next_site--next_site": { "href": "https://tests.next-drupal.org/en/jsonapi/next_site/next_site", }, - "node--article": Object { + "node--article": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article", }, - "node--page": Object { + "node--page": { "href": "https://tests.next-drupal.org/en/jsonapi/node/page", }, - "node--recipe": Object { + "node--recipe": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe", }, - "node_type--node_type": Object { + "node_type--node_type": { "href": "https://tests.next-drupal.org/en/jsonapi/node_type/node_type", }, - "oauth2_token--access_token": Object { + "oauth2_token--access_token": { "href": "https://tests.next-drupal.org/en/jsonapi/oauth2_token/access_token", }, - "oauth2_token--auth_code": Object { + "oauth2_token--auth_code": { "href": "https://tests.next-drupal.org/en/jsonapi/oauth2_token/auth_code", }, - "oauth2_token--refresh_token": Object { + "oauth2_token--refresh_token": { "href": "https://tests.next-drupal.org/en/jsonapi/oauth2_token/refresh_token", }, - "oauth2_token_type--oauth2_token_type": Object { + "oauth2_token_type--oauth2_token_type": { "href": "https://tests.next-drupal.org/en/jsonapi/oauth2_token_type/oauth2_token_type", }, - "path_alias--path_alias": Object { + "path_alias--path_alias": { "href": "https://tests.next-drupal.org/en/jsonapi/path_alias/path_alias", }, - "pathauto_pattern--pathauto_pattern": Object { + "pathauto_pattern--pathauto_pattern": { "href": "https://tests.next-drupal.org/en/jsonapi/pathauto_pattern/pathauto_pattern", }, - "rdf_mapping--rdf_mapping": Object { + "rdf_mapping--rdf_mapping": { "href": "https://tests.next-drupal.org/en/jsonapi/rdf_mapping/rdf_mapping", }, - "responsive_image_style--responsive_image_style": Object { + "responsive_image_style--responsive_image_style": { "href": "https://tests.next-drupal.org/en/jsonapi/responsive_image_style/responsive_image_style", }, - "search_api_index--search_api_index": Object { + "search_api_index--search_api_index": { "href": "https://tests.next-drupal.org/en/jsonapi/search_api_index/search_api_index", }, - "search_api_server--search_api_server": Object { + "search_api_server--search_api_server": { "href": "https://tests.next-drupal.org/en/jsonapi/search_api_server/search_api_server", }, - "search_api_task--search_api_task": Object { + "search_api_task--search_api_task": { "href": "https://tests.next-drupal.org/en/jsonapi/search_api_task/search_api_task", }, - "search_page--search_page": Object { + "search_page--search_page": { "href": "https://tests.next-drupal.org/en/jsonapi/search_page/search_page", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi", }, - "shortcut--default": Object { + "shortcut--default": { "href": "https://tests.next-drupal.org/en/jsonapi/shortcut/default", }, - "shortcut_set--shortcut_set": Object { + "shortcut_set--shortcut_set": { "href": "https://tests.next-drupal.org/en/jsonapi/shortcut_set/shortcut_set", }, - "taxonomy_term--recipe_category": Object { + "taxonomy_term--recipe_category": { "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/recipe_category", }, - "taxonomy_term--tags": Object { + "taxonomy_term--tags": { "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_term/tags", }, - "taxonomy_vocabulary--taxonomy_vocabulary": Object { + "taxonomy_vocabulary--taxonomy_vocabulary": { "href": "https://tests.next-drupal.org/en/jsonapi/taxonomy_vocabulary/taxonomy_vocabulary", }, - "tour--tour": Object { + "tour--tour": { "href": "https://tests.next-drupal.org/en/jsonapi/tour/tour", }, - "user--user": Object { + "user--user": { "href": "https://tests.next-drupal.org/en/jsonapi/user/user", }, - "user_role--user_role": Object { + "user_role--user_role": { "href": "https://tests.next-drupal.org/en/jsonapi/user_role/user_role", }, - "view--view": Object { + "view--view": { "href": "https://tests.next-drupal.org/en/jsonapi/view/view", }, - "workflow--workflow": Object { + "workflow--workflow": { "href": "https://tests.next-drupal.org/en/jsonapi/workflow/workflow", }, }, } `; -exports[`getIndex it fetches the JSON:API index with locale 1`] = ` -Object { - "data": Array [], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { +exports[`getIndex() fetches the JSON:API index with locale 1`] = ` +{ + "data": [], + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "action--action": Object { + "links": { + "action--action": { "href": "https://tests.next-drupal.org/es/jsonapi/action/action", }, - "base_field_override--base_field_override": Object { + "base_field_override--base_field_override": { "href": "https://tests.next-drupal.org/es/jsonapi/base_field_override/base_field_override", }, - "block--block": Object { + "block--block": { "href": "https://tests.next-drupal.org/es/jsonapi/block/block", }, - "block_content--banner_block": Object { + "block_content--banner_block": { "href": "https://tests.next-drupal.org/es/jsonapi/block_content/banner_block", }, - "block_content--basic": Object { + "block_content--basic": { "href": "https://tests.next-drupal.org/es/jsonapi/block_content/basic", }, - "block_content--disclaimer_block": Object { + "block_content--disclaimer_block": { "href": "https://tests.next-drupal.org/es/jsonapi/block_content/disclaimer_block", }, - "block_content--footer_promo_block": Object { + "block_content--footer_promo_block": { "href": "https://tests.next-drupal.org/es/jsonapi/block_content/footer_promo_block", }, - "block_content_type--block_content_type": Object { + "block_content_type--block_content_type": { "href": "https://tests.next-drupal.org/es/jsonapi/block_content_type/block_content_type", }, - "configurable_language--configurable_language": Object { + "configurable_language--configurable_language": { "href": "https://tests.next-drupal.org/es/jsonapi/configurable_language/configurable_language", }, - "consumer--consumer": Object { + "consumer--consumer": { "href": "https://tests.next-drupal.org/es/jsonapi/consumer/consumer", }, - "contact_form--contact_form": Object { + "contact_form--contact_form": { "href": "https://tests.next-drupal.org/es/jsonapi/contact_form/contact_form", }, - "contact_message--feedback": Object { + "contact_message--feedback": { "href": "https://tests.next-drupal.org/es/jsonapi/contact_message/feedback", }, - "contact_message--personal": Object { + "contact_message--personal": { "href": "https://tests.next-drupal.org/es/jsonapi/contact_message/personal", }, - "date_format--date_format": Object { + "date_format--date_format": { "href": "https://tests.next-drupal.org/es/jsonapi/date_format/date_format", }, - "editor--editor": Object { + "editor--editor": { "href": "https://tests.next-drupal.org/es/jsonapi/editor/editor", }, - "entity_form_display--entity_form_display": Object { + "entity_form_display--entity_form_display": { "href": "https://tests.next-drupal.org/es/jsonapi/entity_form_display/entity_form_display", }, - "entity_form_mode--entity_form_mode": Object { + "entity_form_mode--entity_form_mode": { "href": "https://tests.next-drupal.org/es/jsonapi/entity_form_mode/entity_form_mode", }, - "entity_view_display--entity_view_display": Object { + "entity_view_display--entity_view_display": { "href": "https://tests.next-drupal.org/es/jsonapi/entity_view_display/entity_view_display", }, - "entity_view_mode--entity_view_mode": Object { + "entity_view_mode--entity_view_mode": { "href": "https://tests.next-drupal.org/es/jsonapi/entity_view_mode/entity_view_mode", }, - "facets_facet--facets_facet": Object { + "facets_facet--facets_facet": { "href": "https://tests.next-drupal.org/es/jsonapi/facets_facet/facets_facet", }, - "facets_facet_source--facets_facet_source": Object { + "facets_facet_source--facets_facet_source": { "href": "https://tests.next-drupal.org/es/jsonapi/facets_facet_source/facets_facet_source", }, - "field_config--field_config": Object { + "field_config--field_config": { "href": "https://tests.next-drupal.org/es/jsonapi/field_config/field_config", }, - "field_storage_config--field_storage_config": Object { + "field_storage_config--field_storage_config": { "href": "https://tests.next-drupal.org/es/jsonapi/field_storage_config/field_storage_config", }, - "file--file": Object { + "file--file": { "href": "https://tests.next-drupal.org/es/jsonapi/file/file", }, - "filter_format--filter_format": Object { + "filter_format--filter_format": { "href": "https://tests.next-drupal.org/es/jsonapi/filter_format/filter_format", }, - "image_style--image_style": Object { + "image_style--image_style": { "href": "https://tests.next-drupal.org/es/jsonapi/image_style/image_style", }, - "language_content_settings--language_content_settings": Object { + "language_content_settings--language_content_settings": { "href": "https://tests.next-drupal.org/es/jsonapi/language_content_settings/language_content_settings", }, - "media--audio": Object { + "media--audio": { "href": "https://tests.next-drupal.org/es/jsonapi/media/audio", }, - "media--document": Object { + "media--document": { "href": "https://tests.next-drupal.org/es/jsonapi/media/document", }, - "media--image": Object { + "media--image": { "href": "https://tests.next-drupal.org/es/jsonapi/media/image", }, - "media--remote_video": Object { + "media--remote_video": { "href": "https://tests.next-drupal.org/es/jsonapi/media/remote_video", }, - "media--video": Object { + "media--video": { "href": "https://tests.next-drupal.org/es/jsonapi/media/video", }, - "media_type--media_type": Object { + "media_type--media_type": { "href": "https://tests.next-drupal.org/es/jsonapi/media_type/media_type", }, - "menu--menu": Object { + "menu--menu": { "href": "https://tests.next-drupal.org/es/jsonapi/menu/menu", }, - "menu_link_content--menu_link_content": Object { + "menu_link_content--menu_link_content": { "href": "https://tests.next-drupal.org/es/jsonapi/menu_link_content/menu_link_content", }, - "next_entity_type_config--next_entity_type_config": Object { + "next_entity_type_config--next_entity_type_config": { "href": "https://tests.next-drupal.org/es/jsonapi/next_entity_type_config/next_entity_type_config", }, - "next_site--next_site": Object { + "next_site--next_site": { "href": "https://tests.next-drupal.org/es/jsonapi/next_site/next_site", }, - "node--article": Object { + "node--article": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article", }, - "node--page": Object { + "node--page": { "href": "https://tests.next-drupal.org/es/jsonapi/node/page", }, - "node--recipe": Object { + "node--recipe": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe", }, - "node_type--node_type": Object { + "node_type--node_type": { "href": "https://tests.next-drupal.org/es/jsonapi/node_type/node_type", }, - "oauth2_token--access_token": Object { + "oauth2_token--access_token": { "href": "https://tests.next-drupal.org/es/jsonapi/oauth2_token/access_token", }, - "oauth2_token--auth_code": Object { + "oauth2_token--auth_code": { "href": "https://tests.next-drupal.org/es/jsonapi/oauth2_token/auth_code", }, - "oauth2_token--refresh_token": Object { + "oauth2_token--refresh_token": { "href": "https://tests.next-drupal.org/es/jsonapi/oauth2_token/refresh_token", }, - "oauth2_token_type--oauth2_token_type": Object { + "oauth2_token_type--oauth2_token_type": { "href": "https://tests.next-drupal.org/es/jsonapi/oauth2_token_type/oauth2_token_type", }, - "path_alias--path_alias": Object { + "path_alias--path_alias": { "href": "https://tests.next-drupal.org/es/jsonapi/path_alias/path_alias", }, - "pathauto_pattern--pathauto_pattern": Object { + "pathauto_pattern--pathauto_pattern": { "href": "https://tests.next-drupal.org/es/jsonapi/pathauto_pattern/pathauto_pattern", }, - "rdf_mapping--rdf_mapping": Object { + "rdf_mapping--rdf_mapping": { "href": "https://tests.next-drupal.org/es/jsonapi/rdf_mapping/rdf_mapping", }, - "responsive_image_style--responsive_image_style": Object { + "responsive_image_style--responsive_image_style": { "href": "https://tests.next-drupal.org/es/jsonapi/responsive_image_style/responsive_image_style", }, - "search_api_index--search_api_index": Object { + "search_api_index--search_api_index": { "href": "https://tests.next-drupal.org/es/jsonapi/search_api_index/search_api_index", }, - "search_api_server--search_api_server": Object { + "search_api_server--search_api_server": { "href": "https://tests.next-drupal.org/es/jsonapi/search_api_server/search_api_server", }, - "search_api_task--search_api_task": Object { + "search_api_task--search_api_task": { "href": "https://tests.next-drupal.org/es/jsonapi/search_api_task/search_api_task", }, - "search_page--search_page": Object { + "search_page--search_page": { "href": "https://tests.next-drupal.org/es/jsonapi/search_page/search_page", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi", }, - "shortcut--default": Object { + "shortcut--default": { "href": "https://tests.next-drupal.org/es/jsonapi/shortcut/default", }, - "shortcut_set--shortcut_set": Object { + "shortcut_set--shortcut_set": { "href": "https://tests.next-drupal.org/es/jsonapi/shortcut_set/shortcut_set", }, - "taxonomy_term--recipe_category": Object { + "taxonomy_term--recipe_category": { "href": "https://tests.next-drupal.org/es/jsonapi/taxonomy_term/recipe_category", }, - "taxonomy_term--tags": Object { + "taxonomy_term--tags": { "href": "https://tests.next-drupal.org/es/jsonapi/taxonomy_term/tags", }, - "taxonomy_vocabulary--taxonomy_vocabulary": Object { + "taxonomy_vocabulary--taxonomy_vocabulary": { "href": "https://tests.next-drupal.org/es/jsonapi/taxonomy_vocabulary/taxonomy_vocabulary", }, - "tour--tour": Object { + "tour--tour": { "href": "https://tests.next-drupal.org/es/jsonapi/tour/tour", }, - "user--user": Object { + "user--user": { "href": "https://tests.next-drupal.org/es/jsonapi/user/user", }, - "user_role--user_role": Object { + "user_role--user_role": { "href": "https://tests.next-drupal.org/es/jsonapi/user_role/user_role", }, - "view--view": Object { + "view--view": { "href": "https://tests.next-drupal.org/es/jsonapi/view/view", }, - "workflow--workflow": Object { + "workflow--workflow": { "href": "https://tests.next-drupal.org/es/jsonapi/workflow/workflow", }, }, } `; -exports[`getMenu it fetches menu items for a menu 1`] = ` -Object { - "items": Array [ - Object { +exports[`getMenu() fetches menu items for a menu 1`] = ` +{ + "items": [ + { "description": "", "enabled": true, "expanded": false, "id": "standard.front_page", "menu_name": "main", - "meta": Array [], - "options": Array [], + "meta": [], + "options": [], "parent": "", "provider": "demo_umami", - "route": Object { + "route": { "name": "", - "parameters": Array [], + "parameters": [], }, "title": "Home", "type": "menu_link_content--menu_link_content", "url": "/en", "weight": "0", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.featured_articles.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "featured_articles", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.featured_articles.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Articles", "type": "menu_link_content--menu_link_content", "url": "/en/articles", "weight": "20", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.recipes.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "recipes", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.recipes.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Recipes", "type": "menu_link_content--menu_link_content", @@ -1268,64 +678,64 @@ Object { "weight": "30", }, ], - "tree": Array [ - Object { + "tree": [ + { "description": "", "enabled": true, "expanded": false, "id": "standard.front_page", "menu_name": "main", - "meta": Array [], - "options": Array [], + "meta": [], + "options": [], "parent": "", "provider": "demo_umami", - "route": Object { + "route": { "name": "", - "parameters": Array [], + "parameters": [], }, "title": "Home", "type": "menu_link_content--menu_link_content", "url": "/en", "weight": "0", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.featured_articles.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "featured_articles", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.featured_articles.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Articles", "type": "menu_link_content--menu_link_content", "url": "/en/articles", "weight": "20", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.recipes.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "recipes", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.recipes.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Recipes", "type": "menu_link_content--menu_link_content", @@ -1336,66 +746,66 @@ Object { } `; -exports[`getMenu it fetches menu items for a menu with locale 1`] = ` -Object { - "items": Array [ - Object { +exports[`getMenu() fetches menu items for a menu with locale 1`] = ` +{ + "items": [ + { "description": "", "enabled": true, "expanded": false, "id": "standard.front_page", "menu_name": "main", - "meta": Array [], - "options": Array [], + "meta": [], + "options": [], "parent": "", "provider": "demo_umami", - "route": Object { + "route": { "name": "", - "parameters": Array [], + "parameters": [], }, "title": "Inicio", "type": "menu_link_content--menu_link_content", "url": "/es", "weight": "0", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.featured_articles.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "featured_articles", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.featured_articles.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Artículos", "type": "menu_link_content--menu_link_content", "url": "/es/articles", "weight": "20", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.recipes.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "recipes", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.recipes.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Recetas", "type": "menu_link_content--menu_link_content", @@ -1403,64 +813,64 @@ Object { "weight": "30", }, ], - "tree": Array [ - Object { + "tree": [ + { "description": "", "enabled": true, "expanded": false, "id": "standard.front_page", "menu_name": "main", - "meta": Array [], - "options": Array [], + "meta": [], + "options": [], "parent": "", "provider": "demo_umami", - "route": Object { + "route": { "name": "", - "parameters": Array [], + "parameters": [], }, "title": "Inicio", "type": "menu_link_content--menu_link_content", "url": "/es", "weight": "0", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.featured_articles.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "featured_articles", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.featured_articles.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Artículos", "type": "menu_link_content--menu_link_content", "url": "/es/articles", "weight": "20", }, - Object { + { "description": "", "enabled": true, "expanded": false, "id": "views_view:views.recipes.page_1", "menu_name": "main", - "meta": Object { + "meta": { "display_id": "page_1", "view_id": "recipes", }, - "options": Array [], + "options": [], "parent": "", "provider": "views", - "route": Object { + "route": { "name": "view.recipes.page_1", - "parameters": Array [], + "parameters": [], }, "title": "Recetas", "type": "menu_link_content--menu_link_content", @@ -1471,20 +881,20 @@ Object { } `; -exports[`getMenu it fetches menu items for a menu with params 1`] = ` -Object { - "items": Array [ - Object { +exports[`getMenu() fetches menu items for a menu with params 1`] = ` +{ + "items": [ + { "id": "standard.front_page", "title": "Home", "type": "menu_link_content--menu_link_content", }, - Object { + { "id": "views_view:views.featured_articles.page_1", "title": "Articles", "type": "menu_link_content--menu_link_content", }, - Object { + { "id": "views_view:views.recipes.page_1", "title": "Recipes", "type": "menu_link_content--menu_link_content", @@ -1494,37 +904,8 @@ Object { } `; -exports[`getPathFromContext it encodes path with punctuation 1`] = ` -Object { - "entity": Object { - "bundle": "page", - "canonical": "https://tests.next-drupal.org/en/path%26with%5Epunc%26in%24path", - "id": "20", - "langcode": "en", - "path": "/en/path%26with%5Epunc%26in%24path", - "type": "node", - "uuid": "e4bbe727-14ee-44bc-a34a-14ce5c86a82e", - }, - "isHomePath": false, - "jsonapi": Object { - "basePath": "/en/jsonapi", - "entryPoint": "https://tests.next-drupal.org/en/jsonapi", - "individual": "https://tests.next-drupal.org/en/jsonapi/node/page/e4bbe727-14ee-44bc-a34a-14ce5c86a82e", - "pathPrefix": "en/jsonapi", - "resourceName": "node--page", - }, - "label": "Page with characters in path", - "meta": Object { - "deprecated": Object { - "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", - }, - }, - "resolved": "https://tests.next-drupal.org/en/path%26with%5Epunc%26in%24path", -} -`; - -exports[`getResource it fetches a resource by uuid 1`] = ` -Object { +exports[`getResource() fetches a resource by uuid 1`] = ` +{ "changed": "2022-03-25T08:02:17+00:00", "content_translation_outdated": false, "content_translation_source": "und", @@ -1534,7 +915,7 @@ Object { "drupal_internal__vid": 37, "field_cooking_time": 30, "field_difficulty": "medium", - "field_ingredients": Array [ + "field_ingredients": [ "For the pastry:", "280g plain flour", "140g butter", @@ -1549,25 +930,25 @@ Object { "200g sun dried tomatoes", "100g feta", ], - "field_media_image": Object { + "field_media_image": { "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 1, }, "type": "media--image", }, "field_number_of_servings": 8, "field_preparation_time": 40, - "field_recipe_category": Array [ - Object { + "field_recipe_category": [ + { "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 31, }, "type": "taxonomy_term--recipe_category", }, ], - "field_recipe_instruction": Object { + "field_recipe_instruction": { "format": "basic_html", "processed": "
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  3. @@ -1584,24 +965,24 @@ Object {
", }, - "field_summary": Object { + "field_summary": { "format": "basic_html", "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

", "value": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "46258827-cfad-4813-99dc-287c4cb41117", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 22, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 13, }, "type": "taxonomy_term--tags", @@ -1609,26 +990,26 @@ Object { ], "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "recipe", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/recipes/deep-mediterranean-quiche", "langcode": "en", "pid": 67, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -1639,9 +1020,9 @@ Object { "revision_log": null, "revision_timestamp": "2022-03-25T08:02:17+00:00", "revision_translation_affected": true, - "revision_uid": Object { + "revision_uid": { "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 1, }, "type": "user--user", @@ -1650,9 +1031,9 @@ Object { "sticky": false, "title": "Deep mediterranean quiche - edited", "type": "node--recipe", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -1660,12 +1041,12 @@ Object { } `; -exports[`getResource it fetches a resource by uuid with params 1`] = ` -Object { +exports[`getResource() fetches a resource by uuid with params 1`] = ` +{ "field_cooking_time": 30, "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, @@ -1674,12 +1055,12 @@ Object { } `; -exports[`getResource it fetches a resource using locale 1`] = ` -Object { +exports[`getResource() fetches a resource using locale 1`] = ` +{ "field_cooking_time": 30, "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, @@ -1688,10 +1069,10 @@ Object { } `; -exports[`getResource it fetches raw data 1`] = ` -Object { - "data": Object { - "attributes": Object { +exports[`getResource() fetches raw data 1`] = ` +{ + "data": { + "attributes": { "changed": "2022-03-25T08:02:17+00:00", "content_translation_outdated": false, "content_translation_source": "und", @@ -1701,7 +1082,7 @@ Object { "drupal_internal__vid": 37, "field_cooking_time": 30, "field_difficulty": "medium", - "field_ingredients": Array [ + "field_ingredients": [ "For the pastry:", "280g plain flour", "140g butter", @@ -1718,7 +1099,7 @@ Object { ], "field_number_of_servings": 8, "field_preparation_time": 40, - "field_recipe_instruction": Object { + "field_recipe_instruction": { "format": "basic_html", "processed": "
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  3. @@ -1735,7 +1116,7 @@ Object {
", }, - "field_summary": Object { + "field_summary": { "format": "basic_html", "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

", @@ -1744,7 +1125,7 @@ Object { }, "langcode": "en", "moderation_state": "published", - "path": Object { + "path": { "alias": "/recipes/deep-mediterranean-quiche", "langcode": "en", "pid": 67, @@ -1758,121 +1139,121 @@ Object { "title": "Deep mediterranean quiche - edited", }, "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, - "relationships": Object { - "field_media_image": Object { - "data": Object { + "relationships": { + "field_media_image": { + "data": { "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", - "meta": Object { + "meta": { "drupal_internal__target_id": 1, }, "type": "media--image", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_media_image?resourceVersion=id%3A37", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_media_image?resourceVersion=id%3A37", }, }, }, - "field_recipe_category": Object { - "data": Array [ - Object { + "field_recipe_category": { + "data": [ + { "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", - "meta": Object { + "meta": { "drupal_internal__target_id": 31, }, "type": "taxonomy_term--recipe_category", }, ], - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_recipe_category?resourceVersion=id%3A37", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_recipe_category?resourceVersion=id%3A37", }, }, }, - "field_tags": Object { - "data": Array [ - Object { + "field_tags": { + "data": [ + { "id": "46258827-cfad-4813-99dc-287c4cb41117", - "meta": Object { + "meta": { "drupal_internal__target_id": 22, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", - "meta": Object { + "meta": { "drupal_internal__target_id": 13, }, "type": "taxonomy_term--tags", }, ], - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_tags?resourceVersion=id%3A37", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_tags?resourceVersion=id%3A37", }, }, }, - "node_type": Object { - "data": Object { + "node_type": { + "data": { "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", - "meta": Object { + "meta": { "drupal_internal__target_id": "recipe", }, "type": "node_type--node_type", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/node_type?resourceVersion=id%3A37", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/node_type?resourceVersion=id%3A37", }, }, }, - "revision_uid": Object { - "data": Object { + "revision_uid": { + "data": { "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", - "meta": Object { + "meta": { "drupal_internal__target_id": 1, }, "type": "user--user", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/revision_uid?resourceVersion=id%3A37", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/revision_uid?resourceVersion=id%3A37", }, }, }, - "uid": Object { - "data": Object { + "uid": { + "data": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "meta": Object { + "meta": { "drupal_internal__target_id": 4, }, "type": "user--user", }, - "links": Object { - "related": Object { + "links": { + "related": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/uid?resourceVersion=id%3A37", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/uid?resourceVersion=id%3A37", }, }, @@ -1880,26 +1261,26 @@ Object { }, "type": "node--recipe", }, - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", }, }, } `; -exports[`getResourceByPath it fetches a resource by path 1`] = ` -Object { +exports[`getResourceByPath() fetches a resource by path 1`] = ` +{ "changed": "2022-03-25T08:02:17+00:00", "content_translation_outdated": false, "content_translation_source": "und", @@ -1909,7 +1290,7 @@ Object { "drupal_internal__vid": 37, "field_cooking_time": 30, "field_difficulty": "medium", - "field_ingredients": Array [ + "field_ingredients": [ "For the pastry:", "280g plain flour", "140g butter", @@ -1924,25 +1305,25 @@ Object { "200g sun dried tomatoes", "100g feta", ], - "field_media_image": Object { + "field_media_image": { "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 1, }, "type": "media--image", }, "field_number_of_servings": 8, "field_preparation_time": 40, - "field_recipe_category": Array [ - Object { + "field_recipe_category": [ + { "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 31, }, "type": "taxonomy_term--recipe_category", }, ], - "field_recipe_instruction": Object { + "field_recipe_instruction": { "format": "basic_html", "processed": "
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  3. @@ -1959,24 +1340,24 @@ Object {
", }, - "field_summary": Object { + "field_summary": { "format": "basic_html", "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

", "value": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "46258827-cfad-4813-99dc-287c4cb41117", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 22, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 13, }, "type": "taxonomy_term--tags", @@ -1984,26 +1365,26 @@ Object { ], "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "recipe", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/recipes/deep-mediterranean-quiche", "langcode": "en", "pid": 67, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -2014,9 +1395,9 @@ Object { "revision_log": null, "revision_timestamp": "2022-03-25T08:02:17+00:00", "revision_translation_affected": true, - "revision_uid": Object { + "revision_uid": { "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 1, }, "type": "user--user", @@ -2025,9 +1406,9 @@ Object { "sticky": false, "title": "Deep mediterranean quiche - edited", "type": "node--recipe", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -2035,12 +1416,12 @@ Object { } `; -exports[`getResourceByPath it fetches a resource by path using locale 1`] = ` -Object { +exports[`getResourceByPath() fetches a resource by path using locale 1`] = ` +{ "field_cooking_time": 30, "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, @@ -2049,12 +1430,12 @@ Object { } `; -exports[`getResourceByPath it fetches a resource by path with params 1`] = ` -Object { +exports[`getResourceByPath() fetches a resource by path with params 1`] = ` +{ "field_cooking_time": 30, "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, @@ -2063,10 +1444,10 @@ Object { } `; -exports[`getResourceByPath it fetches raw data 1`] = ` -Object { - "data": Object { - "attributes": Object { +exports[`getResourceByPath() fetches raw data 1`] = ` +{ + "data": { + "attributes": { "changed": "2022-03-25T08:02:17+00:00", "content_translation_outdated": false, "content_translation_source": "und", @@ -2076,7 +1457,7 @@ Object { "drupal_internal__vid": 37, "field_cooking_time": 30, "field_difficulty": "medium", - "field_ingredients": Array [ + "field_ingredients": [ "For the pastry:", "280g plain flour", "140g butter", @@ -2093,7 +1474,7 @@ Object { ], "field_number_of_servings": 8, "field_preparation_time": 40, - "field_recipe_instruction": Object { + "field_recipe_instruction": { "format": "basic_html", "processed": "
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  3. @@ -2110,7 +1491,7 @@ Object {
", }, - "field_summary": Object { + "field_summary": { "format": "basic_html", "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

", @@ -2119,7 +1500,7 @@ Object { }, "langcode": "en", "moderation_state": "published", - "path": Object { + "path": { "alias": "/recipes/deep-mediterranean-quiche", "langcode": "en", "pid": 67, @@ -2131,451 +1512,224 @@ Object { "status": true, "sticky": false, "title": "Deep mediterranean quiche - edited", - }, - "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", - }, - }, - "relationships": Object { - "field_media_image": Object { - "data": Object { - "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", - "meta": Object { - "drupal_internal__target_id": 1, - }, - "type": "media--image", - }, - "links": Object { - "related": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_media_image?resourceVersion=id%3A37", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_media_image?resourceVersion=id%3A37", - }, - }, - }, - "field_recipe_category": Object { - "data": Array [ - Object { - "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", - "meta": Object { - "drupal_internal__target_id": 31, - }, - "type": "taxonomy_term--recipe_category", - }, - ], - "links": Object { - "related": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_recipe_category?resourceVersion=id%3A37", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_recipe_category?resourceVersion=id%3A37", - }, - }, - }, - "field_tags": Object { - "data": Array [ - Object { - "id": "46258827-cfad-4813-99dc-287c4cb41117", - "meta": Object { - "drupal_internal__target_id": 22, - }, - "type": "taxonomy_term--tags", - }, - Object { - "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", - "meta": Object { - "drupal_internal__target_id": 13, - }, - "type": "taxonomy_term--tags", - }, - ], - "links": Object { - "related": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_tags?resourceVersion=id%3A37", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_tags?resourceVersion=id%3A37", - }, - }, - }, - "node_type": Object { - "data": Object { - "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", - "meta": Object { - "drupal_internal__target_id": "recipe", - }, - "type": "node_type--node_type", - }, - "links": Object { - "related": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/node_type?resourceVersion=id%3A37", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/node_type?resourceVersion=id%3A37", - }, - }, - }, - "revision_uid": Object { - "data": Object { - "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", - "meta": Object { - "drupal_internal__target_id": 1, - }, - "type": "user--user", - }, - "links": Object { - "related": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/revision_uid?resourceVersion=id%3A37", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/revision_uid?resourceVersion=id%3A37", - }, - }, - }, - "uid": Object { - "data": Object { - "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "meta": Object { - "drupal_internal__target_id": 4, - }, - "type": "user--user", - }, - "links": Object { - "related": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/uid?resourceVersion=id%3A37", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/uid?resourceVersion=id%3A37", - }, - }, - }, - }, - "type": "node--recipe", - }, - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { - "href": "http://jsonapi.org/format/1.0/", - }, - }, - }, - "version": "1.0", - }, - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", - }, - }, -} -`; - -exports[`getResourceCollection it fetches a resource collection 1`] = ` -Array [ - Object { - "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", - }, - }, - "title": "Give it a go and grow your own herbs", - "type": "node--article", - }, - Object { - "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", - }, - }, - "title": "Dairy-free and delicious milk chocolate", - "type": "node--article", - }, - Object { - "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", - }, - }, - "title": "The real deal for supermarket savvy shopping", - "type": "node--article", - }, - Object { - "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", - }, - }, - "title": "The Umami guide to our favorite mushrooms", - "type": "node--article", - }, - Object { - "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", - }, - }, - "title": "Let's hear it for carrots", - "type": "node--article", - }, - Object { - "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", - }, - }, - "title": "Baking mishaps - our troubleshooting tips", - "type": "node--article", - }, - Object { - "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", - }, - }, - "title": "Skip the spirits with delicious mocktails", - "type": "node--article", - }, - Object { - "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", - }, - }, - "title": "Give your oatmeal the ultimate makeover", - "type": "node--article", - }, -] -`; - -exports[`getResourceCollection it fetches a resource collection using locale 1`] = ` -Array [ - Object { - "id": "52837ad0-f218-46bd-a106-5710336b7053", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", - }, - }, - "title": "Prueba y cultiva tus propias hierbas", - "type": "node--article", - }, - Object { - "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", - }, - }, - "title": "Delicioso chocolate sin lactosa", - "type": "node--article", - }, - Object { - "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", - }, - }, - "title": "El verdadero negocio para comprar en el supermercado", - "type": "node--article", - }, - Object { - "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", - }, - }, - "title": "Guía Umami de nuestras setas preferidas", - "type": "node--article", - }, - Object { - "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", - }, - }, - "title": "Un aplauso para las zanahorias", - "type": "node--article", - }, - Object { - "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", - }, - }, - "title": "Percances al hornear - nuestros consejos para solucionar los problemas", - "type": "node--article", - }, - Object { - "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", - }, - }, - "title": "Salta los espíritus con deliciosos cócteles sin alcohol", - "type": "node--article", - }, - Object { - "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "langcode": "es", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", + }, + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, - "title": "Dale a tu avena el cambio de imagen definitivo", - "type": "node--article", - }, -] -`; - -exports[`getResourceCollection it fetches raw data 1`] = ` -Object { - "data": Array [ - Object { - "attributes": Object { - "title": "Vegan chocolate and nut brownies", + "relationships": { + "field_media_image": { + "data": { + "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", + "meta": { + "drupal_internal__target_id": 1, + }, + "type": "media--image", + }, + "links": { + "related": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_media_image?resourceVersion=id%3A37", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_media_image?resourceVersion=id%3A37", + }, + }, }, - "id": "7862d283-ece2-4ae1-8bef-865259f72315", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/7862d283-ece2-4ae1-8bef-865259f72315?resourceVersion=id%3A4", + "field_recipe_category": { + "data": [ + { + "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", + "meta": { + "drupal_internal__target_id": 31, + }, + "type": "taxonomy_term--recipe_category", + }, + ], + "links": { + "related": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_recipe_category?resourceVersion=id%3A37", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_recipe_category?resourceVersion=id%3A37", + }, }, }, - "type": "node--recipe", - }, - Object { - "attributes": Object { - "title": "Super easy vegetarian pasta bake", + "field_tags": { + "data": [ + { + "id": "46258827-cfad-4813-99dc-287c4cb41117", + "meta": { + "drupal_internal__target_id": 22, + }, + "type": "taxonomy_term--tags", + }, + { + "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", + "meta": { + "drupal_internal__target_id": 13, + }, + "type": "taxonomy_term--tags", + }, + ], + "links": { + "related": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/field_tags?resourceVersion=id%3A37", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/field_tags?resourceVersion=id%3A37", + }, + }, }, - "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", + "node_type": { + "data": { + "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", + "meta": { + "drupal_internal__target_id": "recipe", + }, + "type": "node_type--node_type", + }, + "links": { + "related": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/node_type?resourceVersion=id%3A37", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/node_type?resourceVersion=id%3A37", + }, + }, + }, + "revision_uid": { + "data": { + "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", + "meta": { + "drupal_internal__target_id": 1, + }, + "type": "user--user", + }, + "links": { + "related": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/revision_uid?resourceVersion=id%3A37", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/revision_uid?resourceVersion=id%3A37", + }, + }, + }, + "uid": { + "data": { + "id": "9e4944e8-dd77-407a-8610-83e823b48b56", + "meta": { + "drupal_internal__target_id": 4, + }, + "type": "user--user", + }, + "links": { + "related": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/uid?resourceVersion=id%3A37", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f/relationships/uid?resourceVersion=id%3A37", + }, }, }, - "type": "node--recipe", }, - ], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "type": "node--recipe", + }, + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "next": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Boffset%5D=2&page%5Blimit%5D=2", - }, - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Blimit%5D=2", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", }, }, } `; -exports[`getResourceCollectionFromContext it fetches a resource collection 1`] = ` -Array [ - Object { +exports[`getResourceCollection() fetches a resource collection 1`] = ` +[ + { "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, "title": "Give it a go and grow your own herbs", "type": "node--article", }, - Object { + { "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", }, }, "title": "Dairy-free and delicious milk chocolate", "type": "node--article", }, - Object { + { "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", }, }, "title": "The real deal for supermarket savvy shopping", "type": "node--article", }, - Object { + { "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", }, }, "title": "The Umami guide to our favorite mushrooms", "type": "node--article", }, - Object { + { "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", }, }, "title": "Let's hear it for carrots", "type": "node--article", }, - Object { + { "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", }, }, "title": "Baking mishaps - our troubleshooting tips", "type": "node--article", }, - Object { + { "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", }, }, "title": "Skip the spirits with delicious mocktails", "type": "node--article", }, - Object { + { "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", }, }, @@ -2585,90 +1739,90 @@ Array [ ] `; -exports[`getResourceCollectionFromContext it fetches a resource collection using locale 1`] = ` -Array [ - Object { +exports[`getResourceCollection() fetches a resource collection using locale 1`] = ` +[ + { "id": "52837ad0-f218-46bd-a106-5710336b7053", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, "title": "Prueba y cultiva tus propias hierbas", "type": "node--article", }, - Object { + { "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", }, }, "title": "Delicioso chocolate sin lactosa", "type": "node--article", }, - Object { + { "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", }, }, "title": "El verdadero negocio para comprar en el supermercado", "type": "node--article", }, - Object { + { "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", }, }, "title": "Guía Umami de nuestras setas preferidas", "type": "node--article", }, - Object { + { "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", }, }, "title": "Un aplauso para las zanahorias", "type": "node--article", }, - Object { + { "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", }, }, "title": "Percances al hornear - nuestros consejos para solucionar los problemas", "type": "node--article", }, - Object { + { "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", }, }, "title": "Salta los espíritus con deliciosos cócteles sin alcohol", "type": "node--article", }, - Object { + { "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", "langcode": "es", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", }, }, @@ -2678,356 +1832,141 @@ Array [ ] `; -exports[`getResourceCollectionFromContext it fetches raw data 1`] = ` -Object { - "data": Array [ - Object { - "attributes": Object { +exports[`getResourceCollection() fetches raw data 1`] = ` +{ + "data": [ + { + "attributes": { "title": "Vegan chocolate and nut brownies", }, "id": "7862d283-ece2-4ae1-8bef-865259f72315", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/7862d283-ece2-4ae1-8bef-865259f72315?resourceVersion=id%3A4", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Super easy vegetarian pasta bake", }, "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", }, }, "type": "node--recipe", }, ], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "next": Object { + "links": { + "next": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Boffset%5D=2&page%5Blimit%5D=2", }, - "self": Object { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Blimit%5D=2", }, }, } `; -exports[`getResourceFromContext it accepts a translated path 1`] = ` -Object { - "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", - }, - }, - "path": Object { - "alias": "/recipes/deep-mediterranean-quiche", - "langcode": "en", - "pid": 67, - }, - "status": true, - "title": "Deep mediterranean quiche - edited", - "type": "node--recipe", -} -`; - -exports[`getResourceFromContext it fetches a resource from context 1`] = ` -Object { - "changed": "2022-03-25T08:02:17+00:00", - "content_translation_outdated": false, - "content_translation_source": "und", - "created": "2022-03-21T10:52:42+00:00", - "default_langcode": true, - "drupal_internal__nid": 1, - "drupal_internal__vid": 37, - "field_cooking_time": 30, - "field_difficulty": "medium", - "field_ingredients": Array [ - "For the pastry:", - "280g plain flour", - "140g butter", - "Cold water", - "For the filling:", - "1 onion", - "2 garlic cloves", - "Half a courgette", - "450ml soya milk", - "500g grated parmesan", - "2 eggs", - "200g sun dried tomatoes", - "100g feta", - ], - "field_media_image": Object { - "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 1, - }, - "type": "media--image", - }, - "field_number_of_servings": 8, - "field_preparation_time": 40, - "field_recipe_category": Array [ - Object { - "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 31, - }, - "type": "taxonomy_term--recipe_category", - }, - ], - "field_recipe_instruction": Object { - "format": "basic_html", - "processed": "
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. -
  3. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  4. -
  5. Whilst the pastry is cooling, chop and gently cook the onions, garlic and courgette.
  6. -
  7. In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.
  8. -
  9. Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.
  10. -
", - "value": "
    -
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. -
  3. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  4. -
  5. Whilst the pastry is cooling, chop and gently cook the onions, garlic and courgette.
  6. -
  7. In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.
  8. -
  9. Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.
  10. -
-", - }, - "field_summary": Object { - "format": "basic_html", - "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

-", - "value": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

-", - }, - "field_tags": Array [ - Object { - "id": "46258827-cfad-4813-99dc-287c4cb41117", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 22, - }, - "type": "taxonomy_term--tags", - }, - Object { - "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 13, - }, - "type": "taxonomy_term--tags", - }, - ], - "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "langcode": "en", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", - }, - }, - "moderation_state": "published", - "node_type": Object { - "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": "recipe", - }, - "type": "node_type--node_type", - }, - "path": Object { - "alias": "/recipes/deep-mediterranean-quiche", - "langcode": "en", - "pid": 67, - }, - "promote": true, - "relationshipNames": Array [ - "node_type", - "revision_uid", - "uid", - "field_media_image", - "field_recipe_category", - "field_tags", - ], - "revision_log": null, - "revision_timestamp": "2022-03-25T08:02:17+00:00", - "revision_translation_affected": true, - "revision_uid": Object { - "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 1, - }, - "type": "user--user", - }, - "status": true, - "sticky": false, - "title": "Deep mediterranean quiche - edited", - "type": "node--recipe", - "uid": Object { - "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { - "drupal_internal__target_id": 4, - }, - "type": "user--user", - }, -} -`; - -exports[`getResourceFromContext it fetches a resource from context using locale 1`] = ` -Object { - "field_cooking_time": 30, - "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", - }, - }, - "title": "Quiche mediterráneo profundo", - "type": "node--recipe", -} -`; - -exports[`getResourceFromContext it fetches a resource from context with params 1`] = ` -Object { - "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", - }, - }, - "title": "Deep mediterranean quiche - edited", - "type": "node--recipe", -} -`; - -exports[`getResourceFromContext it fetches raw data 1`] = ` -Object { - "data": Object { - "attributes": Object { - "title": "Deep mediterranean quiche - edited", - }, - "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", - }, - }, - "type": "node--recipe", - }, - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { - "href": "http://jsonapi.org/format/1.0/", - }, - }, - }, - "version": "1.0", - }, - "links": Object { - "self": Object { - "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?fields%5Bnode--recipe%5D=title&resourceVersion=rel%3Alatest-version", - }, - }, -} -`; - -exports[`getSearchIndex it fetches a search index 1`] = ` -Array [ - Object { +exports[`getSearchIndex() fetches a search index 1`] = ` +[ + { "id": "3873f7b4-790c-4f93-ac7a-b4ca71272128", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/3873f7b4-790c-4f93-ac7a-b4ca71272128?resourceVersion=id%3A18", }, }, "title": "Fiery chili sauce", "type": "node--recipe", }, - Object { + { "id": "f4fff2df-1a2a-4762-be23-6b7d5755eba1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/f4fff2df-1a2a-4762-be23-6b7d5755eba1?resourceVersion=id%3A10", }, }, "title": "Victoria sponge cake", "type": "node--recipe", }, - Object { + { "id": "20b576d2-2343-4b94-bd46-445ecc526e48", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/20b576d2-2343-4b94-bd46-445ecc526e48?resourceVersion=id%3A16", }, }, "title": "Crema catalana", "type": "node--recipe", }, - Object { + { "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, "title": "Deep mediterranean quiche - edited", "type": "node--recipe", }, - Object { + { "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", }, }, "title": "Super easy vegetarian pasta bake", "type": "node--recipe", }, - Object { + { "id": "84e09cbf-e33e-46bd-b40c-4dda4e00937a", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/84e09cbf-e33e-46bd-b40c-4dda4e00937a?resourceVersion=id%3A12", }, }, "title": "Gluten free pizza", "type": "node--recipe", }, - Object { + { "id": "194f2647-1fbb-42b1-9ea5-3a3eb0494e04", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/194f2647-1fbb-42b1-9ea5-3a3eb0494e04?resourceVersion=id%3A14", }, }, "title": "Thai green curry", "type": "node--recipe", }, - Object { + { "id": "7862d283-ece2-4ae1-8bef-865259f72315", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/7862d283-ece2-4ae1-8bef-865259f72315?resourceVersion=id%3A4", }, }, "title": "Vegan chocolate and nut brownies", "type": "node--recipe", }, - Object { + { "id": "0bf47bce-51c9-480e-9c24-cd0a457a4f9b", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/0bf47bce-51c9-480e-9c24-cd0a457a4f9b?resourceVersion=id%3A8", }, }, @@ -3037,110 +1976,110 @@ Array [ ] `; -exports[`getSearchIndex it fetches a search index with facets filters 1`] = ` -Object { - "data": Array [ - Object { - "attributes": Object { +exports[`getSearchIndex() fetches a search index with facets filters 1`] = ` +{ + "data": [ + { + "attributes": { "field_difficulty": "easy", "title": "Super easy vegetarian pasta bake", }, "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "field_difficulty": "easy", "title": "Watercress soup", }, "id": "0bf47bce-51c9-480e-9c24-cd0a457a4f9b", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/0bf47bce-51c9-480e-9c24-cd0a457a4f9b?resourceVersion=id%3A8", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "field_difficulty": "easy", "title": "Victoria sponge cake", }, "id": "f4fff2df-1a2a-4762-be23-6b7d5755eba1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/f4fff2df-1a2a-4762-be23-6b7d5755eba1?resourceVersion=id%3A10", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "field_difficulty": "easy", "title": "Fiery chili sauce", }, "id": "3873f7b4-790c-4f93-ac7a-b4ca71272128", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/3873f7b4-790c-4f93-ac7a-b4ca71272128?resourceVersion=id%3A18", }, }, "type": "node--recipe", }, ], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/jsonapi/index/recipes?fields%5Bnode--recipe%5D=title%2Cfield_difficulty&filter%5Bdifficulty%5D=easy", }, }, - "meta": Object { + "meta": { "count": 8, - "facets": Array [ - Object { - "#attached": Object { - "library": Array [ + "facets": [ + { + "#attached": { + "library": [ "facets/drupal.facets.link-widget", ], }, - "#attributes": Object { - "class": Array [ + "#attributes": { + "class": [ "facet-active", "js-facets-links", ], "data-drupal-facet-alias": "difficulty", "data-drupal-facet-id": "difficulty", }, - "#context": Object { + "#context": { "list_style": "links", }, - "#facet": Object { + "#facet": { "show_title": null, }, - "#items": Array [ - Object { - "#attributes": Object { + "#items": [ + { + "#attributes": { "data-drupal-facet-item-count": 10, "data-drupal-facet-item-id": "difficulty-medium", "data-drupal-facet-item-value": "medium", }, - "#title": Object { + "#title": { "#count": 10, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3150,25 +2089,25 @@ Object { "#value": "medium", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { - "class": Array [ + { + "#attributes": { + "class": [ "is-active", ], "data-drupal-facet-item-count": 8, "data-drupal-facet-item-id": "difficulty-easy", "data-drupal-facet-item-value": "easy", }, - "#title": Object { + "#title": { "#count": 8, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": true, @@ -3178,9 +2117,9 @@ Object { "#value": "easy", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, @@ -3188,36 +2127,36 @@ Object { ], "#theme": "facets_item_list__links__difficulty", }, - Object { - "#attached": Object { - "library": Array [ + { + "#attached": { + "library": [ "facets/drupal.facets.link-widget", ], }, - "#attributes": Object { - "class": Array [ + "#attributes": { + "class": [ "facet-inactive", "js-facets-links", ], "data-drupal-facet-alias": "recipe_category", "data-drupal-facet-id": "recipe_category", }, - "#context": Object { + "#context": { "list_style": "links", }, - "#facet": Object { + "#facet": { "show_title": null, }, - "#items": Array [ - Object { - "#attributes": Object { + "#items": [ + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-29", "data-drupal-facet-item-value": "29", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3227,22 +2166,22 @@ Object { "#value": "29", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-30", "data-drupal-facet-item-value": "30", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3252,22 +2191,22 @@ Object { "#value": "30", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-31", "data-drupal-facet-item-value": "31", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3277,22 +2216,22 @@ Object { "#value": "31", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-33", "data-drupal-facet-item-value": "33", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3302,9 +2241,9 @@ Object { "#value": "33", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, @@ -3312,36 +2251,36 @@ Object { ], "#theme": "facets_item_list__links__recipe_category", }, - Object { - "#attached": Object { - "library": Array [ + { + "#attached": { + "library": [ "facets/drupal.facets.link-widget", ], }, - "#attributes": Object { - "class": Array [ + "#attributes": { + "class": [ "facet-inactive", "js-facets-links", ], "data-drupal-facet-alias": "title", "data-drupal-facet-id": "title", }, - "#context": Object { + "#context": { "list_style": "links", }, - "#facet": Object { + "#facet": { "show_title": null, }, - "#items": Object { - "0": Object { - "#attributes": Object { + "#items": { + "0": { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "title-de", "data-drupal-facet-item-value": "de", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3351,22 +2290,22 @@ Object { "#value": "de", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "1": Object { - "#attributes": Object { + "1": { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "title-pasta", "data-drupal-facet-item-value": "pasta", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3376,22 +2315,22 @@ Object { "#value": "pasta", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "10": Object { - "#attributes": Object { + "10": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-easy", "data-drupal-facet-item-value": "easy", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3401,22 +2340,22 @@ Object { "#value": "easy", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "11": Object { - "#attributes": Object { + "11": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-fiery", "data-drupal-facet-item-value": "fiery", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3426,22 +2365,22 @@ Object { "#value": "fiery", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "12": Object { - "#attributes": Object { + "12": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-fácil", "data-drupal-facet-item-value": "fácil", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3451,22 +2390,22 @@ Object { "#value": "fácil", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "13": Object { - "#attributes": Object { + "13": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-horno", "data-drupal-facet-item-value": "horno", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3476,22 +2415,22 @@ Object { "#value": "horno", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "14": Object { - "#attributes": Object { + "14": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-pastel", "data-drupal-facet-item-value": "pastel", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3501,22 +2440,22 @@ Object { "#value": "pastel", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "15": Object { - "#attributes": Object { + "15": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-salsa", "data-drupal-facet-item-value": "salsa", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3526,22 +2465,22 @@ Object { "#value": "salsa", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "16": Object { - "#attributes": Object { + "16": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-sauce", "data-drupal-facet-item-value": "sauce", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3551,22 +2490,22 @@ Object { "#value": "sauce", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "17": Object { - "#attributes": Object { + "17": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-sopa", "data-drupal-facet-item-value": "sopa", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3576,22 +2515,22 @@ Object { "#value": "sopa", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "18": Object { - "#attributes": Object { + "18": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-soup", "data-drupal-facet-item-value": "soup", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3601,22 +2540,22 @@ Object { "#value": "soup", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "19": Object { - "#attributes": Object { + "19": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-sponge", "data-drupal-facet-item-value": "sponge", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3626,22 +2565,22 @@ Object { "#value": "sponge", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "2": Object { - "#attributes": Object { + "2": { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "title-victoria", "data-drupal-facet-item-value": "victoria", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3651,22 +2590,22 @@ Object { "#value": "victoria", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "20": Object { - "#attributes": Object { + "20": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-super", "data-drupal-facet-item-value": "super", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3676,22 +2615,22 @@ Object { "#value": "super", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "21": Object { - "#attributes": Object { + "21": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-súper", "data-drupal-facet-item-value": "súper", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3701,22 +2640,22 @@ Object { "#value": "súper", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "22": Object { - "#attributes": Object { + "22": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-vegetarian", "data-drupal-facet-item-value": "vegetarian", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3726,22 +2665,22 @@ Object { "#value": "vegetarian", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "23": Object { - "#attributes": Object { + "23": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-vegetariana", "data-drupal-facet-item-value": "vegetariana", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3751,22 +2690,22 @@ Object { "#value": "vegetariana", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "24": Object { - "#attributes": Object { + "24": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-watercress", "data-drupal-facet-item-value": "watercress", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3776,22 +2715,22 @@ Object { "#value": "watercress", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "3": Object { - "#attributes": Object { + "3": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-al", "data-drupal-facet-item-value": "al", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3801,22 +2740,22 @@ Object { "#value": "al", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "4": Object { - "#attributes": Object { + "4": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-ardiente", "data-drupal-facet-item-value": "ardiente", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3826,22 +2765,22 @@ Object { "#value": "ardiente", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "5": Object { - "#attributes": Object { + "5": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-bake", "data-drupal-facet-item-value": "bake", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3851,22 +2790,22 @@ Object { "#value": "bake", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "6": Object { - "#attributes": Object { + "6": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-berro", "data-drupal-facet-item-value": "berro", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3876,22 +2815,22 @@ Object { "#value": "berro", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "7": Object { - "#attributes": Object { + "7": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-cake", "data-drupal-facet-item-value": "cake", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3901,22 +2840,22 @@ Object { "#value": "cake", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "8": Object { - "#attributes": Object { + "8": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-chile", "data-drupal-facet-item-value": "chile", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3926,22 +2865,22 @@ Object { "#value": "chile", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "9": Object { - "#attributes": Object { + "9": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-chili", "data-drupal-facet-item-value": "chili", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -3951,9 +2890,9 @@ Object { "#value": "chili", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, @@ -3966,92 +2905,92 @@ Object { } `; -exports[`getSearchIndex it fetches a search index with locale 1`] = ` -Array [ - Object { +exports[`getSearchIndex() fetches a search index with locale 1`] = ` +[ + { "id": "3873f7b4-790c-4f93-ac7a-b4ca71272128", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/3873f7b4-790c-4f93-ac7a-b4ca71272128?resourceVersion=id%3A18", }, }, "title": "Salsa de chile ardiente", "type": "node--recipe", }, - Object { + { "id": "f4fff2df-1a2a-4762-be23-6b7d5755eba1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/f4fff2df-1a2a-4762-be23-6b7d5755eba1?resourceVersion=id%3A10", }, }, "title": "Pastel Victoria", "type": "node--recipe", }, - Object { + { "id": "20b576d2-2343-4b94-bd46-445ecc526e48", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/20b576d2-2343-4b94-bd46-445ecc526e48?resourceVersion=id%3A16", }, }, "title": "Crema catalana", "type": "node--recipe", }, - Object { + { "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", }, }, "title": "Quiche mediterráneo profundo", "type": "node--recipe", }, - Object { + { "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", }, }, "title": "Pasta vegetariana al horno súper fácil", "type": "node--recipe", }, - Object { + { "id": "84e09cbf-e33e-46bd-b40c-4dda4e00937a", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/84e09cbf-e33e-46bd-b40c-4dda4e00937a?resourceVersion=id%3A12", }, }, "title": "Pizza sin gluten", "type": "node--recipe", }, - Object { + { "id": "194f2647-1fbb-42b1-9ea5-3a3eb0494e04", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/194f2647-1fbb-42b1-9ea5-3a3eb0494e04?resourceVersion=id%3A14", }, }, "title": "Curry verde tailandés", "type": "node--recipe", }, - Object { + { "id": "7862d283-ece2-4ae1-8bef-865259f72315", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/7862d283-ece2-4ae1-8bef-865259f72315?resourceVersion=id%3A4", }, }, "title": "Bizcochos veganos de chocolate y nueces", "type": "node--recipe", }, - Object { + { "id": "0bf47bce-51c9-480e-9c24-cd0a457a4f9b", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/0bf47bce-51c9-480e-9c24-cd0a457a4f9b?resourceVersion=id%3A8", }, }, @@ -4061,110 +3000,110 @@ Array [ ] `; -exports[`getSearchIndex it fetches raw data from search index 1`] = ` -Object { - "data": Array [ - Object { - "attributes": Object { +exports[`getSearchIndex() fetches raw data from search index 1`] = ` +{ + "data": [ + { + "attributes": { "field_difficulty": "easy", "title": "Super easy vegetarian pasta bake", }, "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "field_difficulty": "easy", "title": "Watercress soup", }, "id": "0bf47bce-51c9-480e-9c24-cd0a457a4f9b", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/0bf47bce-51c9-480e-9c24-cd0a457a4f9b?resourceVersion=id%3A8", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "field_difficulty": "easy", "title": "Victoria sponge cake", }, "id": "f4fff2df-1a2a-4762-be23-6b7d5755eba1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/f4fff2df-1a2a-4762-be23-6b7d5755eba1?resourceVersion=id%3A10", }, }, "type": "node--recipe", }, - Object { - "attributes": Object { + { + "attributes": { "field_difficulty": "easy", "title": "Fiery chili sauce", }, "id": "3873f7b4-790c-4f93-ac7a-b4ca71272128", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/3873f7b4-790c-4f93-ac7a-b4ca71272128?resourceVersion=id%3A18", }, }, "type": "node--recipe", }, ], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/jsonapi/index/recipes?fields%5Bnode--recipe%5D=title%2Cfield_difficulty&filter%5Bdifficulty%5D=easy", }, }, - "meta": Object { + "meta": { "count": 8, - "facets": Array [ - Object { - "#attached": Object { - "library": Array [ + "facets": [ + { + "#attached": { + "library": [ "facets/drupal.facets.link-widget", ], }, - "#attributes": Object { - "class": Array [ + "#attributes": { + "class": [ "facet-active", "js-facets-links", ], "data-drupal-facet-alias": "difficulty", "data-drupal-facet-id": "difficulty", }, - "#context": Object { + "#context": { "list_style": "links", }, - "#facet": Object { + "#facet": { "show_title": null, }, - "#items": Array [ - Object { - "#attributes": Object { + "#items": [ + { + "#attributes": { "data-drupal-facet-item-count": 10, "data-drupal-facet-item-id": "difficulty-medium", "data-drupal-facet-item-value": "medium", }, - "#title": Object { + "#title": { "#count": 10, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4174,25 +3113,25 @@ Object { "#value": "medium", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { - "class": Array [ + { + "#attributes": { + "class": [ "is-active", ], "data-drupal-facet-item-count": 8, "data-drupal-facet-item-id": "difficulty-easy", "data-drupal-facet-item-value": "easy", }, - "#title": Object { + "#title": { "#count": 8, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": true, @@ -4202,9 +3141,9 @@ Object { "#value": "easy", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, @@ -4212,36 +3151,36 @@ Object { ], "#theme": "facets_item_list__links__difficulty", }, - Object { - "#attached": Object { - "library": Array [ + { + "#attached": { + "library": [ "facets/drupal.facets.link-widget", ], }, - "#attributes": Object { - "class": Array [ + "#attributes": { + "class": [ "facet-inactive", "js-facets-links", ], "data-drupal-facet-alias": "recipe_category", "data-drupal-facet-id": "recipe_category", }, - "#context": Object { + "#context": { "list_style": "links", }, - "#facet": Object { + "#facet": { "show_title": null, }, - "#items": Array [ - Object { - "#attributes": Object { + "#items": [ + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-29", "data-drupal-facet-item-value": "29", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4251,22 +3190,22 @@ Object { "#value": "29", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-30", "data-drupal-facet-item-value": "30", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4276,22 +3215,22 @@ Object { "#value": "30", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-31", "data-drupal-facet-item-value": "31", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4301,22 +3240,22 @@ Object { "#value": "31", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - Object { - "#attributes": Object { + { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "recipe-category-33", "data-drupal-facet-item-value": "33", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4326,9 +3265,9 @@ Object { "#value": "33", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, @@ -4336,36 +3275,36 @@ Object { ], "#theme": "facets_item_list__links__recipe_category", }, - Object { - "#attached": Object { - "library": Array [ + { + "#attached": { + "library": [ "facets/drupal.facets.link-widget", ], }, - "#attributes": Object { - "class": Array [ + "#attributes": { + "class": [ "facet-inactive", "js-facets-links", ], "data-drupal-facet-alias": "title", "data-drupal-facet-id": "title", }, - "#context": Object { + "#context": { "list_style": "links", }, - "#facet": Object { + "#facet": { "show_title": null, }, - "#items": Object { - "0": Object { - "#attributes": Object { + "#items": { + "0": { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "title-de", "data-drupal-facet-item-value": "de", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4375,22 +3314,22 @@ Object { "#value": "de", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "1": Object { - "#attributes": Object { + "1": { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "title-pasta", "data-drupal-facet-item-value": "pasta", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4400,22 +3339,22 @@ Object { "#value": "pasta", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "10": Object { - "#attributes": Object { + "10": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-easy", "data-drupal-facet-item-value": "easy", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4425,22 +3364,22 @@ Object { "#value": "easy", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "11": Object { - "#attributes": Object { + "11": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-fiery", "data-drupal-facet-item-value": "fiery", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4450,22 +3389,22 @@ Object { "#value": "fiery", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "12": Object { - "#attributes": Object { + "12": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-fácil", "data-drupal-facet-item-value": "fácil", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4475,22 +3414,22 @@ Object { "#value": "fácil", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "13": Object { - "#attributes": Object { + "13": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-horno", "data-drupal-facet-item-value": "horno", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4500,22 +3439,22 @@ Object { "#value": "horno", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "14": Object { - "#attributes": Object { + "14": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-pastel", "data-drupal-facet-item-value": "pastel", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4525,22 +3464,22 @@ Object { "#value": "pastel", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "15": Object { - "#attributes": Object { + "15": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-salsa", "data-drupal-facet-item-value": "salsa", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4550,22 +3489,22 @@ Object { "#value": "salsa", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "16": Object { - "#attributes": Object { + "16": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-sauce", "data-drupal-facet-item-value": "sauce", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4575,22 +3514,22 @@ Object { "#value": "sauce", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "17": Object { - "#attributes": Object { + "17": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-sopa", "data-drupal-facet-item-value": "sopa", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4600,22 +3539,22 @@ Object { "#value": "sopa", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "18": Object { - "#attributes": Object { + "18": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-soup", "data-drupal-facet-item-value": "soup", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4625,22 +3564,22 @@ Object { "#value": "soup", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "19": Object { - "#attributes": Object { + "19": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-sponge", "data-drupal-facet-item-value": "sponge", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4650,22 +3589,22 @@ Object { "#value": "sponge", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "2": Object { - "#attributes": Object { + "2": { + "#attributes": { "data-drupal-facet-item-count": 2, "data-drupal-facet-item-id": "title-victoria", "data-drupal-facet-item-value": "victoria", }, - "#title": Object { + "#title": { "#count": 2, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4675,22 +3614,22 @@ Object { "#value": "victoria", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "20": Object { - "#attributes": Object { + "20": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-super", "data-drupal-facet-item-value": "super", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4700,22 +3639,22 @@ Object { "#value": "super", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "21": Object { - "#attributes": Object { + "21": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-súper", "data-drupal-facet-item-value": "súper", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4725,22 +3664,22 @@ Object { "#value": "súper", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "22": Object { - "#attributes": Object { + "22": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-vegetarian", "data-drupal-facet-item-value": "vegetarian", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4750,22 +3689,22 @@ Object { "#value": "vegetarian", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "23": Object { - "#attributes": Object { + "23": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-vegetariana", "data-drupal-facet-item-value": "vegetariana", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4775,22 +3714,22 @@ Object { "#value": "vegetariana", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "24": Object { - "#attributes": Object { + "24": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-watercress", "data-drupal-facet-item-value": "watercress", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4800,22 +3739,22 @@ Object { "#value": "watercress", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "3": Object { - "#attributes": Object { + "3": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-al", "data-drupal-facet-item-value": "al", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4825,22 +3764,22 @@ Object { "#value": "al", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "4": Object { - "#attributes": Object { + "4": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-ardiente", "data-drupal-facet-item-value": "ardiente", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4850,22 +3789,22 @@ Object { "#value": "ardiente", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "5": Object { - "#attributes": Object { + "5": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-bake", "data-drupal-facet-item-value": "bake", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4875,22 +3814,22 @@ Object { "#value": "bake", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "6": Object { - "#attributes": Object { + "6": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-berro", "data-drupal-facet-item-value": "berro", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4900,22 +3839,22 @@ Object { "#value": "berro", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "7": Object { - "#attributes": Object { + "7": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-cake", "data-drupal-facet-item-value": "cake", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4925,22 +3864,22 @@ Object { "#value": "cake", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "8": Object { - "#attributes": Object { + "8": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-chile", "data-drupal-facet-item-value": "chile", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4950,22 +3889,22 @@ Object { "#value": "chile", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, }, - "9": Object { - "#attributes": Object { + "9": { + "#attributes": { "data-drupal-facet-item-count": 1, "data-drupal-facet-item-id": "title-chili", "data-drupal-facet-item-value": "chili", }, - "#title": Object { + "#title": { "#count": 1, - "#facet": Object { + "#facet": { "show_title": null, }, "#is_active": false, @@ -4975,9 +3914,9 @@ Object { "#value": "chili", }, "#type": "link", - "#url": Object {}, - "#wrapper_attributes": Object { - "class": Array [ + "#url": {}, + "#wrapper_attributes": { + "class": [ "facet-item", ], }, @@ -4990,618 +3929,20 @@ Object { } `; -exports[`getStaticPathsFromContext it returns static paths for multiple resoure types from context 1`] = ` -Array [ - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "give-it-a-go-and-grow-your-own-herbs", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "dairy-free-and-delicious-milk-chocolate", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "the-real-deal-for-supermarket-savvy-shopping", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "the-umami-guide-to-our-favourite-mushrooms", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "lets-hear-it-for-carrots", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "baking-mishaps-our-troubleshooting-tips", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "skip-the-spirits-with-delicious-mocktails", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "give-your-oatmeal-the-ultimate-makeover", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "prueba-y-cultiva-tus-propias-hierbas", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "delicioso-chocolate-sin-lactosa", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "el-verdadeo-negocio-para-comprar-en-el-supermercado", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "guia-umami-de-nuestras-setas-preferidas", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "un-aplauso-para-las-zanahorias", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "percances-al-hornear-nuestros-consejos-para-solucionar-problemas", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "salta-los-espiritus-con-deliciosos-cocteles-sin-alcohol", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "dale-a-tu-avena-el-cambio-de-imagen-definitivo", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "vegan-chocolate-and-nut-brownies", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "super-easy-vegetarian-pasta-bake", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "watercress-soup", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "victoria-sponge-cake", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "gluten-free-pizza", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "thai-green-curry", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "crema-catalana", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "fiery-chili-sauce", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "recipes", - "deep-mediterranean-quiche", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "bizcochos-veganos-de-chocolate-y-nueces", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "pasta-vegetariana-horno-super-facil", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "sopa-de-berro", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "pastel-victoria", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "pizza-sin-gluten", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "curry-verde-tailandes", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "crema-catalana", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "salsa-de-chile-ardiente", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "recipes", - "quiche-mediterráneo-profundo", - ], - }, - }, -] -`; - -exports[`getStaticPathsFromContext it returns static paths from context 1`] = ` -Array [ - Object { - "params": Object { - "slug": Array [ - "articles", - "give-it-a-go-and-grow-your-own-herbs", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "dairy-free-and-delicious-milk-chocolate", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "the-real-deal-for-supermarket-savvy-shopping", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "the-umami-guide-to-our-favourite-mushrooms", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "lets-hear-it-for-carrots", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "baking-mishaps-our-troubleshooting-tips", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "skip-the-spirits-with-delicious-mocktails", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "give-your-oatmeal-the-ultimate-makeover", - ], - }, - }, -] -`; - -exports[`getStaticPathsFromContext it returns static paths from context with locale 1`] = ` -Array [ - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "give-it-a-go-and-grow-your-own-herbs", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "dairy-free-and-delicious-milk-chocolate", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "the-real-deal-for-supermarket-savvy-shopping", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "the-umami-guide-to-our-favourite-mushrooms", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "lets-hear-it-for-carrots", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "baking-mishaps-our-troubleshooting-tips", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "skip-the-spirits-with-delicious-mocktails", - ], - }, - }, - Object { - "locale": "en", - "params": Object { - "slug": Array [ - "articles", - "give-your-oatmeal-the-ultimate-makeover", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "prueba-y-cultiva-tus-propias-hierbas", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "delicioso-chocolate-sin-lactosa", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "el-verdadeo-negocio-para-comprar-en-el-supermercado", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "guia-umami-de-nuestras-setas-preferidas", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "un-aplauso-para-las-zanahorias", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "percances-al-hornear-nuestros-consejos-para-solucionar-problemas", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "salta-los-espiritus-con-deliciosos-cocteles-sin-alcohol", - ], - }, - }, - Object { - "locale": "es", - "params": Object { - "slug": Array [ - "articles", - "dale-a-tu-avena-el-cambio-de-imagen-definitivo", - ], - }, - }, -] -`; - -exports[`getStaticPathsFromContext it returns static paths from context with params 1`] = ` -Array [ - Object { - "params": Object { - "slug": Array [ - "articles", - "give-it-a-go-and-grow-your-own-herbs", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "dairy-free-and-delicious-milk-chocolate", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "the-real-deal-for-supermarket-savvy-shopping", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "the-umami-guide-to-our-favourite-mushrooms", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "lets-hear-it-for-carrots", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "baking-mishaps-our-troubleshooting-tips", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "skip-the-spirits-with-delicious-mocktails", - ], - }, - }, - Object { - "params": Object { - "slug": Array [ - "articles", - "give-your-oatmeal-the-ultimate-makeover", - ], - }, - }, -] -`; - -exports[`getView it fetches a view 1`] = ` -Object { +exports[`getView() fetches a view 1`] = ` +{ "id": "featured_articles--page_1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/jsonapi/views/featured_articles/page_1", }, }, - "meta": Object { + "meta": { "count": 8, }, - "results": Array [ - Object { - "body": Object { + "results": [ + { + "body": { "format": "basic_html", "processed": "

There's nothing like having your own supply of fresh herbs, readily available and close at hand to use while cooking. Whether you have a large garden or a small kitchen window sill, there's always enough room for something home grown.

Outdoors

@@ -5644,31 +3985,31 @@ Object { "default_langcode": true, "drupal_internal__nid": 10, "drupal_internal__vid": 20, - "field_media_image": Object { + "field_media_image": { "id": "e5091a16-134e-400d-8393-cfe4eccbcaa2", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 10, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "dcd81647-71b7-48cb-b555-e20322bcb7a7", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 14, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "60d20a4c-9d42-4b25-b717-3af3cba6abe8", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 23, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "57a1d9f6-23a6-4215-a8a9-582202cd938d", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 16, }, "type": "taxonomy_term--tags", @@ -5676,26 +4017,26 @@ Object { ], "id": "52837ad0-f218-46bd-a106-5710336b7053", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/give-it-a-go-and-grow-your-own-herbs", "langcode": "en", "pid": 85, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -5705,9 +4046,9 @@ Object { "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 5, }, "type": "user--user", @@ -5716,16 +4057,16 @@ Object { "sticky": false, "title": "Give it a go and grow your own herbs", "type": "node--article", - "uid": Object { + "uid": { "id": "dd9c916d-4d66-4bff-a851-eeba0cf7673a", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 5, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

The calendar is full of excuses for chocolate-lovers to indulge, from religious festivals to birthdays - and even World Chocolate Day on the 7th July. But for those who are vegan, or on dairy-free diets, there is no need to miss out, because there are plenty of delicious vegan chocolate varieties on offer.

Dairy-free milk chocolate is made in largely the same way as regular chocolate, until the point when the milk is added. Cacao beans are roasted for a couple of hours until they develop a rich flavor. The outer shells are removed, and the interior nibs are ground to make a paste that can be mixed with cocoa butter to produce the desired percentage of chocolate. Flavorings, sugar and milk are added in different quantities to get the type of chocolate being produced. The chocolate is grainy at this point and needs to be mashed until it is smooth - this can take days! Finally, it is tempered through a process of heating and cooling until it is ready to eat.

@@ -5762,24 +4103,24 @@ Object { "default_langcode": true, "drupal_internal__nid": 11, "drupal_internal__vid": 22, - "field_media_image": Object { + "field_media_image": { "id": "8427a15e-771b-405c-b887-3f712973c006", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 11, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "a47d1f3a-cc76-4d32-bffe-baf1ed2ee8a3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 27, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "7b732cc1-c963-498f-91ae-c429059a3cdc", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 7, }, "type": "taxonomy_term--tags", @@ -5787,26 +4128,26 @@ Object { ], "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/dairy-free-and-delicious-milk-chocolate", "langcode": "en", "pid": 87, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -5816,9 +4157,9 @@ Object { "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -5827,16 +4168,16 @@ Object { "sticky": false, "title": "Dairy-free and delicious milk chocolate", "type": "node--article", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

This may not surprise you - but your supermarket is a hot bed of marketing mayhem, designed to improve their profit and to encourage the consumer to spend more than they intended. The tricks that all supermarkets employ are sometimes sensible ploys that any retailer should do to improve sales - but some may be more subtle and less obvious than you might think.

With consumer awareness articles and documentaries frequently picking up on this topic, it's likely the case that retailers find it harder to get away with the more obvious ploys. We are becoming ever more savvy consumers and there's probably not a great deal that gets past us. But here's a few retail tricks to keep in mind when you are rushing around the weekly supermarket stock-up.

@@ -5880,24 +4221,24 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "default_langcode": true, "drupal_internal__nid": 12, "drupal_internal__vid": 24, - "field_media_image": Object { + "field_media_image": { "id": "2c9a045b-ee1a-4664-86de-4328d891a444", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 12, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "3dd82cec-a0ad-44ae-b5aa-b22b29ca9e9c", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 26, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "4b1d0dcc-3fc7-4946-8702-00c04688b790", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 24, }, "type": "taxonomy_term--tags", @@ -5905,26 +4246,26 @@ Our tip: Make your shopping list before leaving the house, checking what you nee ], "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/the-real-deal-for-supermarket-savvy-shopping", "langcode": "en", "pid": 89, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -5934,9 +4275,9 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "cddd2eed-95b6-4261-8de1-d09958a079e7", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 6, }, "type": "user--user", @@ -5945,16 +4286,16 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "sticky": false, "title": "The real deal for supermarket savvy shopping", "type": "node--article", - "uid": Object { + "uid": { "id": "cddd2eed-95b6-4261-8de1-d09958a079e7", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 6, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

We think mushrooms are one of the most enjoyable ingredients to cook with. There are plenty of edible varieties to try, each with their own distinctive shape, size, and taste. And with curious names such as chanterelle, the gypsy, horn of plenty, or hen of the woods, who wouldn't want to know more about cooking with the mighty mushroom?

One of the best things about mushrooms is their versatility. They can be fried, roasted, grilled, steamed, or even cooked in the microwave. And they can be served as the main ingredient for a dish, or simply added as part of the mix. This makes mushrooms an ideal choice for creating absolutely delicious vegetarian dishes.

@@ -5981,24 +4322,24 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "default_langcode": true, "drupal_internal__nid": 13, "drupal_internal__vid": 26, - "field_media_image": Object { + "field_media_image": { "id": "cea9398a-a669-4465-92c4-546fd43f7eb3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 13, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "c8baa7f8-245e-45c6-b26c-8456c5c87190", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 18, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f19c842c-17ec-47e8-9079-44afda5ed90d", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 28, }, "type": "taxonomy_term--tags", @@ -6006,26 +4347,26 @@ Our tip: Make your shopping list before leaving the house, checking what you nee ], "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/the-umami-guide-to-our-favourite-mushrooms", "langcode": "en", "pid": 91, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -6035,9 +4376,9 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -6046,16 +4387,16 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "sticky": false, "title": "The Umami guide to our favorite mushrooms", "type": "node--article", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

Let's hear it for the humble carrot! This sweet and healthy ‘everyday’ veg packs it all in. Great flavor, fantastic color, and if you're one for believing the old story, they can even help you to see better in the dark.

Who doesn't love cooking with this super versatile root veg? We roast them, boil them, blend them into soups, and grate them into salads. The humble carrot has to be one of our favorite veg choices and it's been grown for thousands of years. But back then you were more likely to find a purple, red, yellow or white carrot and not the orange one we are all so familiar with today.

@@ -6090,31 +4431,31 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "default_langcode": true, "drupal_internal__nid": 14, "drupal_internal__vid": 28, - "field_media_image": Object { + "field_media_image": { "id": "f40adf47-e201-421a-968f-65221d09d4ce", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 14, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "83a40a0b-b420-40d5-9a30-aedd15a87cde", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 6, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f19c842c-17ec-47e8-9079-44afda5ed90d", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 28, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "359d7eee-03f0-420f-8c65-30dcc51cdafe", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 15, }, "type": "taxonomy_term--tags", @@ -6122,26 +4463,26 @@ Our tip: Make your shopping list before leaving the house, checking what you nee ], "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/lets-hear-it-for-carrots", "langcode": "en", "pid": 93, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -6151,9 +4492,9 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -6162,16 +4503,16 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "sticky": false, "title": "Let's hear it for carrots", "type": "node--article", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

You follow the recipe, you weigh all your ingredients, you use the right oven temperature and you take your time and yet still, your baking comes out with a soggy bottom, fails to rise or just tastes plain horrible. We have come up with a list of the most frustrating baking problems and the techniques you can use to try and avoid them.

Your cake failed to rise

@@ -6210,24 +4551,24 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "default_langcode": true, "drupal_internal__nid": 15, "drupal_internal__vid": 30, - "field_media_image": Object { + "field_media_image": { "id": "73b0659f-323b-4391-bf53-f650ab1ec9d3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 15, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "c504fd5e-2422-452f-9f89-d001079329fa", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 3, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "500189ad-65ee-4b9b-93f0-748a297c0134", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 17, }, "type": "taxonomy_term--tags", @@ -6235,26 +4576,26 @@ Our tip: Make your shopping list before leaving the house, checking what you nee ], "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/baking-mishaps-our-troubleshooting-tips", "langcode": "en", "pid": 95, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -6264,9 +4605,9 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -6275,16 +4616,16 @@ Our tip: Make your shopping list before leaving the house, checking what you nee "sticky": false, "title": "Baking mishaps - our troubleshooting tips", "type": "node--article", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

Having a cocktail party? Then why not serve up something just as special for those who don't drink alcohol but do want to join in on all the fun? After all, what cocktail party is complete without those incredible looking glasses of mixed fruits, bright colors and of course, the little umbrellas? Do your bit for the environment by ditching the plastic straws and get hold of some great looking alternatives made out of glass, metal, or even bamboo. Don't forget the classic cocktail glasses and cool tumblers to really bring these recipes to life.

@@ -6339,45 +4680,45 @@ So, grab the cocktail mixer, skip the spirits, and shake up these deliciously re "default_langcode": true, "drupal_internal__nid": 16, "drupal_internal__vid": 32, - "field_media_image": Object { + "field_media_image": { "id": "e1950c46-ec1a-4a93-a761-6705342c0e04", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 16, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "77c4a26a-ce8d-44be-a098-e0bedd11f9f0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 1, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "d2ceae46-6cc5-4891-b67f-b896d1055bcf", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 12, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "606fa8a9-b565-45d2-bd18-6ffb256459c3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 20, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "14edf86c-8dfb-4da8-9632-2d72b36f622f", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 8, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "a1bd5b9e-ba25-4a37-a44d-a6ab51f70334", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 11, }, "type": "taxonomy_term--tags", @@ -6385,26 +4726,26 @@ So, grab the cocktail mixer, skip the spirits, and shake up these deliciously re ], "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/skip-the-spirits-with-delicious-mocktails", "langcode": "en", "pid": 97, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -6414,9 +4755,9 @@ So, grab the cocktail mixer, skip the spirits, and shake up these deliciously re "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "cddd2eed-95b6-4261-8de1-d09958a079e7", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 6, }, "type": "user--user", @@ -6425,16 +4766,16 @@ So, grab the cocktail mixer, skip the spirits, and shake up these deliciously re "sticky": false, "title": "Skip the spirits with delicious mocktails", "type": "node--article", - "uid": Object { + "uid": { "id": "cddd2eed-95b6-4261-8de1-d09958a079e7", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 6, }, "type": "user--user", }, }, - Object { - "body": Object { + { + "body": { "format": "basic_html", "processed": "

It is vegan, gluten-free, low in fat, high in fiber, and can even lower cholesterol - but oatmeal is boring, right? Well, before you write off that boring jar of oats, you might want to take inspiration from our topping ideas that will take your oatmeal from bland to creatively delicious in just a few minutes. @@ -6519,45 +4860,45 @@ This low-sugar delight will meet all of those chocolate cravings and is the perf "default_langcode": true, "drupal_internal__nid": 17, "drupal_internal__vid": 34, - "field_media_image": Object { + "field_media_image": { "id": "fef8de9e-7e41-4fa7-a58f-7f54db52ffe3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 17, }, "type": "media--image", }, - "field_tags": Array [ - Object { + "field_tags": [ + { "id": "a47d1f3a-cc76-4d32-bffe-baf1ed2ee8a3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 27, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f19c842c-17ec-47e8-9079-44afda5ed90d", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 28, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "f775118a-6c20-482e-9117-20314c76f2a3", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 19, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "0a31fa5c-3b1d-40b0-9841-2f607fe35272", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "taxonomy_term--tags", }, - Object { + { "id": "eaf76dc5-7988-48cc-8c5b-d240f86d0acc", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 10, }, "type": "taxonomy_term--tags", @@ -6565,26 +4906,26 @@ This low-sugar delight will meet all of those chocolate cravings and is the perf ], "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", "langcode": "en", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", }, }, "moderation_state": "published", - "node_type": Object { + "node_type": { "id": "a145b65a-e660-4f5d-ac0d-bd2ff9e3f0b0", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": "article", }, "type": "node_type--node_type", }, - "path": Object { + "path": { "alias": "/articles/give-your-oatmeal-the-ultimate-makeover", "langcode": "en", "pid": 99, }, "promote": true, - "relationshipNames": Array [ + "relationshipNames": [ "node_type", "revision_uid", "uid", @@ -6594,9 +4935,9 @@ This low-sugar delight will meet all of those chocolate cravings and is the perf "revision_log": null, "revision_timestamp": "2022-03-21T10:52:42+00:00", "revision_translation_affected": null, - "revision_uid": Object { + "revision_uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -6605,9 +4946,9 @@ This low-sugar delight will meet all of those chocolate cravings and is the perf "sticky": false, "title": "Give your oatmeal the ultimate makeover", "type": "node--article", - "uid": Object { + "uid": { "id": "9e4944e8-dd77-407a-8610-83e823b48b56", - "resourceIdObjMeta": Object { + "resourceIdObjMeta": { "drupal_internal__target_id": 4, }, "type": "user--user", @@ -6617,92 +4958,92 @@ This low-sugar delight will meet all of those chocolate cravings and is the perf } `; -exports[`getView it fetches a view with locale 1`] = ` -Object { +exports[`getView() fetches a view with locale 1`] = ` +{ "id": "featured_articles--page_1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/views/featured_articles/page_1?fields%5Bnode--article%5D=title", }, }, - "meta": Object { + "meta": { "count": 8, }, - "results": Array [ - Object { + "results": [ + { "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, "title": "Prueba y cultiva tus propias hierbas", "type": "node--article", }, - Object { + { "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", }, }, "title": "Delicioso chocolate sin lactosa", "type": "node--article", }, - Object { + { "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", }, }, "title": "El verdadero negocio para comprar en el supermercado", "type": "node--article", }, - Object { + { "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", }, }, "title": "Guía Umami de nuestras setas preferidas", "type": "node--article", }, - Object { + { "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", }, }, "title": "Un aplauso para las zanahorias", "type": "node--article", }, - Object { + { "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", }, }, "title": "Percances al hornear - nuestros consejos para solucionar los problemas", "type": "node--article", }, - Object { + { "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", }, }, "title": "Salta los espíritus con deliciosos cócteles sin alcohol", "type": "node--article", }, - Object { + { "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", }, }, @@ -6713,92 +5054,92 @@ Object { } `; -exports[`getView it fetches a view with params 1`] = ` -Object { +exports[`getView() fetches a view with params 1`] = ` +{ "id": "featured_articles--page_1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/jsonapi/views/featured_articles/page_1?fields%5Bnode--article%5D=title", }, }, - "meta": Object { + "meta": { "count": 8, }, - "results": Array [ - Object { + "results": [ + { "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, "title": "Give it a go and grow your own herbs", "type": "node--article", }, - Object { + { "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", }, }, "title": "Dairy-free and delicious milk chocolate", "type": "node--article", }, - Object { + { "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", }, }, "title": "The real deal for supermarket savvy shopping", "type": "node--article", }, - Object { + { "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", }, }, "title": "The Umami guide to our favorite mushrooms", "type": "node--article", }, - Object { + { "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", }, }, "title": "Let's hear it for carrots", "type": "node--article", }, - Object { + { "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", }, }, "title": "Baking mishaps - our troubleshooting tips", "type": "node--article", }, - Object { + { "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", }, }, "title": "Skip the spirits with delicious mocktails", "type": "node--article", }, - Object { + { "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", }, }, @@ -6809,199 +5150,141 @@ Object { } `; -exports[`getView it fetches raw data 1`] = ` -Object { +exports[`getView() fetches raw data 1`] = ` +{ "id": "featured_articles--page_1", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/views/featured_articles/page_1?fields%5Bnode--article%5D=title", }, }, - "meta": Object { + "meta": { "count": 8, }, - "results": Object { - "data": Array [ - Object { - "attributes": Object { + "results": { + "data": [ + { + "attributes": { "title": "Prueba y cultiva tus propias hierbas", }, "id": "52837ad0-f218-46bd-a106-5710336b7053", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Delicioso chocolate sin lactosa", }, "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "El verdadero negocio para comprar en el supermercado", }, "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Guía Umami de nuestras setas preferidas", }, "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Un aplauso para las zanahorias", }, "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Percances al hornear - nuestros consejos para solucionar los problemas", }, "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Salta los espíritus con deliciosos cócteles sin alcohol", }, "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", }, }, "type": "node--article", }, - Object { - "attributes": Object { + { + "attributes": { "title": "Dale a tu avena el cambio de imagen definitivo", }, "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", }, }, "type": "node--article", }, ], - "jsonapi": Object { - "meta": Object { - "links": Object { - "self": Object { + "jsonapi": { + "meta": { + "links": { + "self": { "href": "http://jsonapi.org/format/1.0/", }, }, }, "version": "1.0", }, - "links": Object { - "self": Object { + "links": { + "self": { "href": "https://tests.next-drupal.org/es/jsonapi/views/featured_articles/page_1?fields%5Bnode--article%5D=title", }, }, - "meta": Object { + "meta": { "count": 8, }, }, } `; -exports[`translatePath it translates a path 1`] = ` -Object { - "entity": Object { - "bundle": "recipe", - "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", - "id": "1", - "langcode": "en", - "path": "/en/recipes/deep-mediterranean-quiche", - "type": "node", - "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - }, - "isHomePath": false, - "jsonapi": Object { - "basePath": "/en/jsonapi", - "entryPoint": "https://tests.next-drupal.org/en/jsonapi", - "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "pathPrefix": "en/jsonapi", - "resourceName": "node--recipe", - }, - "label": "Deep mediterranean quiche - edited", - "meta": Object { - "deprecated": Object { - "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", - }, - }, - "resolved": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", -} -`; - -exports[`translatePathFromContext it translates a path 1`] = ` -Object { - "entity": Object { - "bundle": "recipe", - "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", - "id": "1", - "langcode": "en", - "path": "/en/recipes/deep-mediterranean-quiche", - "type": "node", - "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - }, - "isHomePath": false, - "jsonapi": Object { - "basePath": "/en/jsonapi", - "entryPoint": "https://tests.next-drupal.org/en/jsonapi", - "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", - "pathPrefix": "en/jsonapi", - "resourceName": "node--recipe", - }, - "label": "Deep mediterranean quiche - edited", - "meta": Object { - "deprecated": Object { - "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", - }, - }, - "resolved": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", -} -`; - -exports[`translatePathFromContext it translates a path with pathPrefix 1`] = ` -Object { - "entity": Object { +exports[`translatePath() translates a path 1`] = ` +{ + "entity": { "bundle": "recipe", "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", "id": "1", @@ -7011,7 +5294,7 @@ Object { "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", }, "isHomePath": false, - "jsonapi": Object { + "jsonapi": { "basePath": "/en/jsonapi", "entryPoint": "https://tests.next-drupal.org/en/jsonapi", "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", @@ -7019,8 +5302,8 @@ Object { "resourceName": "node--recipe", }, "label": "Deep mediterranean quiche - edited", - "meta": Object { - "deprecated": Object { + "meta": { + "deprecated": { "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", }, }, diff --git a/packages/next-drupal/tests/DrupalClient/__snapshots__/pages-router-methods.test.ts.snap b/packages/next-drupal/tests/DrupalClient/__snapshots__/pages-router-methods.test.ts.snap new file mode 100644 index 00000000..03312b32 --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/__snapshots__/pages-router-methods.test.ts.snap @@ -0,0 +1,2255 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getPathFromContext() encodes path with punctuation 1`] = ` +{ + "entity": { + "bundle": "page", + "canonical": "https://tests.next-drupal.org/en/path%26with%5Epunc%26in%24path", + "id": "20", + "langcode": "en", + "path": "/en/path%26with%5Epunc%26in%24path", + "type": "node", + "uuid": "e4bbe727-14ee-44bc-a34a-14ce5c86a82e", + }, + "isHomePath": false, + "jsonapi": { + "basePath": "/en/jsonapi", + "entryPoint": "https://tests.next-drupal.org/en/jsonapi", + "individual": "https://tests.next-drupal.org/en/jsonapi/node/page/e4bbe727-14ee-44bc-a34a-14ce5c86a82e", + "pathPrefix": "en/jsonapi", + "resourceName": "node--page", + }, + "label": "Page with characters in path", + "meta": { + "deprecated": { + "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", + }, + }, + "resolved": "https://tests.next-drupal.org/en/path%26with%5Epunc%26in%24path", +} +`; + +exports[`getResourceCollectionFromContext() fetches a resource collection 1`] = ` +[ + { + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", + }, + }, + "title": "Give it a go and grow your own herbs", + "type": "node--article", + }, + { + "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", + }, + }, + "title": "Dairy-free and delicious milk chocolate", + "type": "node--article", + }, + { + "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", + }, + }, + "title": "The real deal for supermarket savvy shopping", + "type": "node--article", + }, + { + "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", + }, + }, + "title": "The Umami guide to our favorite mushrooms", + "type": "node--article", + }, + { + "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", + }, + }, + "title": "Let's hear it for carrots", + "type": "node--article", + }, + { + "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", + }, + }, + "title": "Baking mishaps - our troubleshooting tips", + "type": "node--article", + }, + { + "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", + }, + }, + "title": "Skip the spirits with delicious mocktails", + "type": "node--article", + }, + { + "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", + }, + }, + "title": "Give your oatmeal the ultimate makeover", + "type": "node--article", + }, +] +`; + +exports[`getResourceCollectionFromContext() fetches a resource collection using locale 1`] = ` +[ + { + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", + }, + }, + "title": "Prueba y cultiva tus propias hierbas", + "type": "node--article", + }, + { + "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", + }, + }, + "title": "Delicioso chocolate sin lactosa", + "type": "node--article", + }, + { + "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", + }, + }, + "title": "El verdadero negocio para comprar en el supermercado", + "type": "node--article", + }, + { + "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", + }, + }, + "title": "Guía Umami de nuestras setas preferidas", + "type": "node--article", + }, + { + "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", + }, + }, + "title": "Un aplauso para las zanahorias", + "type": "node--article", + }, + { + "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", + }, + }, + "title": "Percances al hornear - nuestros consejos para solucionar los problemas", + "type": "node--article", + }, + { + "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", + }, + }, + "title": "Salta los espíritus con deliciosos cócteles sin alcohol", + "type": "node--article", + }, + { + "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", + }, + }, + "title": "Dale a tu avena el cambio de imagen definitivo", + "type": "node--article", + }, +] +`; + +exports[`getResourceCollectionFromContext() fetches raw data 1`] = ` +{ + "data": [ + { + "attributes": { + "title": "Vegan chocolate and nut brownies", + }, + "id": "7862d283-ece2-4ae1-8bef-865259f72315", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/7862d283-ece2-4ae1-8bef-865259f72315?resourceVersion=id%3A4", + }, + }, + "type": "node--recipe", + }, + { + "attributes": { + "title": "Super easy vegetarian pasta bake", + }, + "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", + }, + }, + "type": "node--recipe", + }, + ], + "jsonapi": { + "meta": { + "links": { + "self": { + "href": "http://jsonapi.org/format/1.0/", + }, + }, + }, + "version": "1.0", + }, + "links": { + "next": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Boffset%5D=2&page%5Blimit%5D=2", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Blimit%5D=2", + }, + }, +} +`; + +exports[`getResourceFromContext() accepts a translated path 1`] = ` +{ + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "path": { + "alias": "/recipes/deep-mediterranean-quiche", + "langcode": "en", + "pid": 67, + }, + "status": true, + "title": "Deep mediterranean quiche - edited", + "type": "node--recipe", +} +`; + +exports[`getResourceFromContext() fetches a resource from context 1`] = ` +{ + "changed": "2022-03-25T08:02:17+00:00", + "content_translation_outdated": false, + "content_translation_source": "und", + "created": "2022-03-21T10:52:42+00:00", + "default_langcode": true, + "drupal_internal__nid": 1, + "drupal_internal__vid": 37, + "field_cooking_time": 30, + "field_difficulty": "medium", + "field_ingredients": [ + "For the pastry:", + "280g plain flour", + "140g butter", + "Cold water", + "For the filling:", + "1 onion", + "2 garlic cloves", + "Half a courgette", + "450ml soya milk", + "500g grated parmesan", + "2 eggs", + "200g sun dried tomatoes", + "100g feta", + ], + "field_media_image": { + "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", + "resourceIdObjMeta": { + "drupal_internal__target_id": 1, + }, + "type": "media--image", + }, + "field_number_of_servings": 8, + "field_preparation_time": 40, + "field_recipe_category": [ + { + "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", + "resourceIdObjMeta": { + "drupal_internal__target_id": 31, + }, + "type": "taxonomy_term--recipe_category", + }, + ], + "field_recipe_instruction": { + "format": "basic_html", + "processed": "

  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. +
  3. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  4. +
  5. Whilst the pastry is cooling, chop and gently cook the onions, garlic and courgette.
  6. +
  7. In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.
  8. +
  9. Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.
  10. +
", + "value": "
    +
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. +
  3. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  4. +
  5. Whilst the pastry is cooling, chop and gently cook the onions, garlic and courgette.
  6. +
  7. In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.
  8. +
  9. Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.
  10. +
+", + }, + "field_summary": { + "format": "basic_html", + "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

+", + "value": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

+", + }, + "field_tags": [ + { + "id": "46258827-cfad-4813-99dc-287c4cb41117", + "resourceIdObjMeta": { + "drupal_internal__target_id": 22, + }, + "type": "taxonomy_term--tags", + }, + { + "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", + "resourceIdObjMeta": { + "drupal_internal__target_id": 13, + }, + "type": "taxonomy_term--tags", + }, + ], + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "langcode": "en", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "moderation_state": "published", + "node_type": { + "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", + "resourceIdObjMeta": { + "drupal_internal__target_id": "recipe", + }, + "type": "node_type--node_type", + }, + "path": { + "alias": "/recipes/deep-mediterranean-quiche", + "langcode": "en", + "pid": 67, + }, + "promote": true, + "relationshipNames": [ + "node_type", + "revision_uid", + "uid", + "field_media_image", + "field_recipe_category", + "field_tags", + ], + "revision_log": null, + "revision_timestamp": "2022-03-25T08:02:17+00:00", + "revision_translation_affected": true, + "revision_uid": { + "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", + "resourceIdObjMeta": { + "drupal_internal__target_id": 1, + }, + "type": "user--user", + }, + "status": true, + "sticky": false, + "title": "Deep mediterranean quiche - edited", + "type": "node--recipe", + "uid": { + "id": "9e4944e8-dd77-407a-8610-83e823b48b56", + "resourceIdObjMeta": { + "drupal_internal__target_id": 4, + }, + "type": "user--user", + }, +} +`; + +exports[`getResourceFromContext() fetches a resource from context using locale 1`] = ` +{ + "field_cooking_time": 30, + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "title": "Quiche mediterráneo profundo", + "type": "node--recipe", +} +`; + +exports[`getResourceFromContext() fetches a resource from context with params 1`] = ` +{ + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "title": "Deep mediterranean quiche - edited", + "type": "node--recipe", +} +`; + +exports[`getResourceFromContext() fetches raw data 1`] = ` +{ + "data": { + "attributes": { + "title": "Deep mediterranean quiche - edited", + }, + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "type": "node--recipe", + }, + "jsonapi": { + "meta": { + "links": { + "self": { + "href": "http://jsonapi.org/format/1.0/", + }, + }, + }, + "version": "1.0", + }, + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?fields%5Bnode--recipe%5D=title&resourceVersion=rel%3Alatest-version", + }, + }, +} +`; + +exports[`getStaticPathsFromContext() returns static paths for multiple resource types from context 1`] = ` +[ + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "prueba-y-cultiva-tus-propias-hierbas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "delicioso-chocolate-sin-lactosa", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "el-verdadeo-negocio-para-comprar-en-el-supermercado", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "guia-umami-de-nuestras-setas-preferidas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "un-aplauso-para-las-zanahorias", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "percances-al-hornear-nuestros-consejos-para-solucionar-problemas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "salta-los-espiritus-con-deliciosos-cocteles-sin-alcohol", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "dale-a-tu-avena-el-cambio-de-imagen-definitivo", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "vegan-chocolate-and-nut-brownies", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "super-easy-vegetarian-pasta-bake", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "watercress-soup", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "victoria-sponge-cake", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "gluten-free-pizza", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "thai-green-curry", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "crema-catalana", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "fiery-chili-sauce", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "deep-mediterranean-quiche", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "bizcochos-veganos-de-chocolate-y-nueces", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "pasta-vegetariana-horno-super-facil", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "sopa-de-berro", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "pastel-victoria", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "pizza-sin-gluten", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "curry-verde-tailandes", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "crema-catalana", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "salsa-de-chile-ardiente", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "quiche-mediterráneo-profundo", + ], + }, + }, +] +`; + +exports[`getStaticPathsFromContext() returns static paths from context 1`] = ` +[ + { + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, +] +`; + +exports[`getStaticPathsFromContext() returns static paths from context with locale 1`] = ` +[ + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "prueba-y-cultiva-tus-propias-hierbas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "delicioso-chocolate-sin-lactosa", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "el-verdadeo-negocio-para-comprar-en-el-supermercado", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "guia-umami-de-nuestras-setas-preferidas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "un-aplauso-para-las-zanahorias", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "percances-al-hornear-nuestros-consejos-para-solucionar-problemas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "salta-los-espiritus-con-deliciosos-cocteles-sin-alcohol", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "dale-a-tu-avena-el-cambio-de-imagen-definitivo", + ], + }, + }, +] +`; + +exports[`getStaticPathsFromContext() returns static paths from context with params 1`] = ` +[ + { + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, +] +`; + +exports[`translatePathFromContext() translates a path 1`] = ` +{ + "entity": { + "bundle": "recipe", + "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", + "id": "1", + "langcode": "en", + "path": "/en/recipes/deep-mediterranean-quiche", + "type": "node", + "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + }, + "isHomePath": false, + "jsonapi": { + "basePath": "/en/jsonapi", + "entryPoint": "https://tests.next-drupal.org/en/jsonapi", + "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "pathPrefix": "en/jsonapi", + "resourceName": "node--recipe", + }, + "label": "Deep mediterranean quiche - edited", + "meta": { + "deprecated": { + "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", + }, + }, + "resolved": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", +} +`; + +exports[`translatePathFromContext() translates a path with pathPrefix 1`] = ` +{ + "entity": { + "bundle": "recipe", + "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", + "id": "1", + "langcode": "en", + "path": "/en/recipes/deep-mediterranean-quiche", + "type": "node", + "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + }, + "isHomePath": false, + "jsonapi": { + "basePath": "/en/jsonapi", + "entryPoint": "https://tests.next-drupal.org/en/jsonapi", + "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "pathPrefix": "en/jsonapi", + "resourceName": "node--recipe", + }, + "label": "Deep mediterranean quiche - edited", + "meta": { + "deprecated": { + "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", + }, + }, + "resolved": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", +} +`; + +exports[`getPathFromContext() encodes path with punctuation 1`] = ` +{ + "entity": { + "bundle": "page", + "canonical": "https://tests.next-drupal.org/en/path%26with%5Epunc%26in%24path", + "id": "20", + "langcode": "en", + "path": "/en/path%26with%5Epunc%26in%24path", + "type": "node", + "uuid": "e4bbe727-14ee-44bc-a34a-14ce5c86a82e", + }, + "isHomePath": false, + "jsonapi": { + "basePath": "/en/jsonapi", + "entryPoint": "https://tests.next-drupal.org/en/jsonapi", + "individual": "https://tests.next-drupal.org/en/jsonapi/node/page/e4bbe727-14ee-44bc-a34a-14ce5c86a82e", + "pathPrefix": "en/jsonapi", + "resourceName": "node--page", + }, + "label": "Page with characters in path", + "meta": { + "deprecated": { + "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", + }, + }, + "resolved": "https://tests.next-drupal.org/en/path%26with%5Epunc%26in%24path", +} +`; + +exports[`getResourceCollectionFromContext() fetches a resource collection 1`] = ` +[ + { + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", + }, + }, + "title": "Give it a go and grow your own herbs", + "type": "node--article", + }, + { + "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", + }, + }, + "title": "Dairy-free and delicious milk chocolate", + "type": "node--article", + }, + { + "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", + }, + }, + "title": "The real deal for supermarket savvy shopping", + "type": "node--article", + }, + { + "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", + }, + }, + "title": "The Umami guide to our favorite mushrooms", + "type": "node--article", + }, + { + "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", + }, + }, + "title": "Let's hear it for carrots", + "type": "node--article", + }, + { + "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", + }, + }, + "title": "Baking mishaps - our troubleshooting tips", + "type": "node--article", + }, + { + "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", + }, + }, + "title": "Skip the spirits with delicious mocktails", + "type": "node--article", + }, + { + "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", + }, + }, + "title": "Give your oatmeal the ultimate makeover", + "type": "node--article", + }, +] +`; + +exports[`getResourceCollectionFromContext() fetches a resource collection using locale 1`] = ` +[ + { + "id": "52837ad0-f218-46bd-a106-5710336b7053", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053?resourceVersion=id%3A20", + }, + }, + "title": "Prueba y cultiva tus propias hierbas", + "type": "node--article", + }, + { + "id": "3d5a7bca-5b4a-49ee-87d2-cbe313562903", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/3d5a7bca-5b4a-49ee-87d2-cbe313562903?resourceVersion=id%3A22", + }, + }, + "title": "Delicioso chocolate sin lactosa", + "type": "node--article", + }, + { + "id": "a1ef61c9-ed15-4b6d-bba2-bf6e5141f961", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/a1ef61c9-ed15-4b6d-bba2-bf6e5141f961?resourceVersion=id%3A24", + }, + }, + "title": "El verdadero negocio para comprar en el supermercado", + "type": "node--article", + }, + { + "id": "ac0b8b56-db8d-4322-9b1e-224f22083f0d", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ac0b8b56-db8d-4322-9b1e-224f22083f0d?resourceVersion=id%3A26", + }, + }, + "title": "Guía Umami de nuestras setas preferidas", + "type": "node--article", + }, + { + "id": "22874ecc-0443-441b-a3c9-3aa94d85b800", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/22874ecc-0443-441b-a3c9-3aa94d85b800?resourceVersion=id%3A28", + }, + }, + "title": "Un aplauso para las zanahorias", + "type": "node--article", + }, + { + "id": "ec51b1de-f51e-4761-b061-aa2624e58b4a", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/ec51b1de-f51e-4761-b061-aa2624e58b4a?resourceVersion=id%3A30", + }, + }, + "title": "Percances al hornear - nuestros consejos para solucionar los problemas", + "type": "node--article", + }, + { + "id": "d5b9ef80-c0aa-45ca-88e7-79c28abe5d50", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/d5b9ef80-c0aa-45ca-88e7-79c28abe5d50?resourceVersion=id%3A32", + }, + }, + "title": "Salta los espíritus con deliciosos cócteles sin alcohol", + "type": "node--article", + }, + { + "id": "6c7c249f-cd1a-41d5-944b-b3bfce68b325", + "langcode": "es", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/article/6c7c249f-cd1a-41d5-944b-b3bfce68b325?resourceVersion=id%3A34", + }, + }, + "title": "Dale a tu avena el cambio de imagen definitivo", + "type": "node--article", + }, +] +`; + +exports[`getResourceCollectionFromContext() fetches raw data 1`] = ` +{ + "data": [ + { + "attributes": { + "title": "Vegan chocolate and nut brownies", + }, + "id": "7862d283-ece2-4ae1-8bef-865259f72315", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/7862d283-ece2-4ae1-8bef-865259f72315?resourceVersion=id%3A4", + }, + }, + "type": "node--recipe", + }, + { + "attributes": { + "title": "Super easy vegetarian pasta bake", + }, + "id": "8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/8d4b237f-f6fe-4bb1-95ef-f9e3b3f9d6b7?resourceVersion=id%3A6", + }, + }, + "type": "node--recipe", + }, + ], + "jsonapi": { + "meta": { + "links": { + "self": { + "href": "http://jsonapi.org/format/1.0/", + }, + }, + }, + "version": "1.0", + }, + "links": { + "next": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Boffset%5D=2&page%5Blimit%5D=2", + }, + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe?fields%5Bnode--recipe%5D=title&page%5Blimit%5D=2", + }, + }, +} +`; + +exports[`getResourceFromContext() accepts a translated path 1`] = ` +{ + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "path": { + "alias": "/recipes/deep-mediterranean-quiche", + "langcode": "en", + "pid": 67, + }, + "status": true, + "title": "Deep mediterranean quiche - edited", + "type": "node--recipe", +} +`; + +exports[`getResourceFromContext() fetches a resource from context 1`] = ` +{ + "changed": "2022-03-25T08:02:17+00:00", + "content_translation_outdated": false, + "content_translation_source": "und", + "created": "2022-03-21T10:52:42+00:00", + "default_langcode": true, + "drupal_internal__nid": 1, + "drupal_internal__vid": 37, + "field_cooking_time": 30, + "field_difficulty": "medium", + "field_ingredients": [ + "For the pastry:", + "280g plain flour", + "140g butter", + "Cold water", + "For the filling:", + "1 onion", + "2 garlic cloves", + "Half a courgette", + "450ml soya milk", + "500g grated parmesan", + "2 eggs", + "200g sun dried tomatoes", + "100g feta", + ], + "field_media_image": { + "id": "bbfe9d97-2da2-432b-a22c-0396c08e06ca", + "resourceIdObjMeta": { + "drupal_internal__target_id": 1, + }, + "type": "media--image", + }, + "field_number_of_servings": 8, + "field_preparation_time": 40, + "field_recipe_category": [ + { + "id": "a6c02fe4-67bf-462c-90cb-32281a07efe4", + "resourceIdObjMeta": { + "drupal_internal__target_id": 31, + }, + "type": "taxonomy_term--recipe_category", + }, + ], + "field_recipe_instruction": { + "format": "basic_html", + "processed": "
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. +
  3. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  4. +
  5. Whilst the pastry is cooling, chop and gently cook the onions, garlic and courgette.
  6. +
  7. In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.
  8. +
  9. Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.
  10. +
", + "value": "
    +
  1. Preheat the oven to 400°F/200°C. Starting with the pastry; rub the flour and butter together in a bowl until crumbling like breadcrumbs. Add water, a little at a time, until it forms a dough.
  2. +
  3. Roll out the pastry on a floured board and gently spread over your tin. Place in the fridge for 20 minutes before blind baking for a further 10.
  4. +
  5. Whilst the pastry is cooling, chop and gently cook the onions, garlic and courgette.
  6. +
  7. In a large bowl, add the soya milk, half the parmesan, and the eggs. Gently mix.
  8. +
  9. Once the pastry is cooked, spread the onions, garlic and sun dried tomatoes over the base and pour the eggs mix over. Sprinkle the remaining parmesan and careful lay the feta over the top. Bake for 30 minutes or until golden brown.
  10. +
+", + }, + "field_summary": { + "format": "basic_html", + "processed": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

+", + "value": "

An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.

+", + }, + "field_tags": [ + { + "id": "46258827-cfad-4813-99dc-287c4cb41117", + "resourceIdObjMeta": { + "drupal_internal__target_id": 22, + }, + "type": "taxonomy_term--tags", + }, + { + "id": "f32a4d84-0568-4bfd-8be3-8217d36efb6d", + "resourceIdObjMeta": { + "drupal_internal__target_id": 13, + }, + "type": "taxonomy_term--tags", + }, + ], + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "langcode": "en", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "moderation_state": "published", + "node_type": { + "id": "9b70a287-cade-454f-be8b-dea7b9a37c7a", + "resourceIdObjMeta": { + "drupal_internal__target_id": "recipe", + }, + "type": "node_type--node_type", + }, + "path": { + "alias": "/recipes/deep-mediterranean-quiche", + "langcode": "en", + "pid": 67, + }, + "promote": true, + "relationshipNames": [ + "node_type", + "revision_uid", + "uid", + "field_media_image", + "field_recipe_category", + "field_tags", + ], + "revision_log": null, + "revision_timestamp": "2022-03-25T08:02:17+00:00", + "revision_translation_affected": true, + "revision_uid": { + "id": "365cc7b5-ddc4-4b3b-939e-1494400aab4a", + "resourceIdObjMeta": { + "drupal_internal__target_id": 1, + }, + "type": "user--user", + }, + "status": true, + "sticky": false, + "title": "Deep mediterranean quiche - edited", + "type": "node--recipe", + "uid": { + "id": "9e4944e8-dd77-407a-8610-83e823b48b56", + "resourceIdObjMeta": { + "drupal_internal__target_id": 4, + }, + "type": "user--user", + }, +} +`; + +exports[`getResourceFromContext() fetches a resource from context using locale 1`] = ` +{ + "field_cooking_time": 30, + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/es/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "title": "Quiche mediterráneo profundo", + "type": "node--recipe", +} +`; + +exports[`getResourceFromContext() fetches a resource from context with params 1`] = ` +{ + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "title": "Deep mediterranean quiche - edited", + "type": "node--recipe", +} +`; + +exports[`getResourceFromContext() fetches raw data 1`] = ` +{ + "data": { + "attributes": { + "title": "Deep mediterranean quiche - edited", + }, + "id": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?resourceVersion=id%3A37", + }, + }, + "type": "node--recipe", + }, + "jsonapi": { + "meta": { + "links": { + "self": { + "href": "http://jsonapi.org/format/1.0/", + }, + }, + }, + "version": "1.0", + }, + "links": { + "self": { + "href": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f?fields%5Bnode--recipe%5D=title&resourceVersion=rel%3Alatest-version", + }, + }, +} +`; + +exports[`getStaticPathsFromContext() returns static paths for multiple resource types from context 1`] = ` +[ + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "prueba-y-cultiva-tus-propias-hierbas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "delicioso-chocolate-sin-lactosa", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "el-verdadeo-negocio-para-comprar-en-el-supermercado", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "guia-umami-de-nuestras-setas-preferidas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "un-aplauso-para-las-zanahorias", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "percances-al-hornear-nuestros-consejos-para-solucionar-problemas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "salta-los-espiritus-con-deliciosos-cocteles-sin-alcohol", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "dale-a-tu-avena-el-cambio-de-imagen-definitivo", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "vegan-chocolate-and-nut-brownies", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "super-easy-vegetarian-pasta-bake", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "watercress-soup", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "victoria-sponge-cake", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "gluten-free-pizza", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "thai-green-curry", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "crema-catalana", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "fiery-chili-sauce", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "recipes", + "deep-mediterranean-quiche", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "bizcochos-veganos-de-chocolate-y-nueces", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "pasta-vegetariana-horno-super-facil", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "sopa-de-berro", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "pastel-victoria", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "pizza-sin-gluten", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "curry-verde-tailandes", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "crema-catalana", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "salsa-de-chile-ardiente", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "recipes", + "quiche-mediterráneo-profundo", + ], + }, + }, +] +`; + +exports[`getStaticPathsFromContext() returns static paths from context 1`] = ` +[ + { + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, +] +`; + +exports[`getStaticPathsFromContext() returns static paths from context with locale 1`] = ` +[ + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "locale": "en", + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "prueba-y-cultiva-tus-propias-hierbas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "delicioso-chocolate-sin-lactosa", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "el-verdadeo-negocio-para-comprar-en-el-supermercado", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "guia-umami-de-nuestras-setas-preferidas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "un-aplauso-para-las-zanahorias", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "percances-al-hornear-nuestros-consejos-para-solucionar-problemas", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "salta-los-espiritus-con-deliciosos-cocteles-sin-alcohol", + ], + }, + }, + { + "locale": "es", + "params": { + "slug": [ + "articles", + "dale-a-tu-avena-el-cambio-de-imagen-definitivo", + ], + }, + }, +] +`; + +exports[`getStaticPathsFromContext() returns static paths from context with params 1`] = ` +[ + { + "params": { + "slug": [ + "articles", + "give-it-a-go-and-grow-your-own-herbs", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "dairy-free-and-delicious-milk-chocolate", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-real-deal-for-supermarket-savvy-shopping", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "the-umami-guide-to-our-favourite-mushrooms", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "lets-hear-it-for-carrots", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "baking-mishaps-our-troubleshooting-tips", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "skip-the-spirits-with-delicious-mocktails", + ], + }, + }, + { + "params": { + "slug": [ + "articles", + "give-your-oatmeal-the-ultimate-makeover", + ], + }, + }, +] +`; + +exports[`translatePathFromContext() translates a path 1`] = ` +{ + "entity": { + "bundle": "recipe", + "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", + "id": "1", + "langcode": "en", + "path": "/en/recipes/deep-mediterranean-quiche", + "type": "node", + "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + }, + "isHomePath": false, + "jsonapi": { + "basePath": "/en/jsonapi", + "entryPoint": "https://tests.next-drupal.org/en/jsonapi", + "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "pathPrefix": "en/jsonapi", + "resourceName": "node--recipe", + }, + "label": "Deep mediterranean quiche - edited", + "meta": { + "deprecated": { + "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", + }, + }, + "resolved": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", +} +`; + +exports[`translatePathFromContext() translates a path with pathPrefix 1`] = ` +{ + "entity": { + "bundle": "recipe", + "canonical": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", + "id": "1", + "langcode": "en", + "path": "/en/recipes/deep-mediterranean-quiche", + "type": "node", + "uuid": "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + }, + "isHomePath": false, + "jsonapi": { + "basePath": "/en/jsonapi", + "entryPoint": "https://tests.next-drupal.org/en/jsonapi", + "individual": "https://tests.next-drupal.org/en/jsonapi/node/recipe/71e04ead-4cc7-416c-b9ca-60b635fdc50f", + "pathPrefix": "en/jsonapi", + "resourceName": "node--recipe", + }, + "label": "Deep mediterranean quiche - edited", + "meta": { + "deprecated": { + "jsonapi.pathPrefix": "This property has been deprecated and will be removed in the next version of Decoupled Router. Use basePath instead.", + }, + }, + "resolved": "https://tests.next-drupal.org/en/recipes/deep-mediterranean-quiche", +} +`; diff --git a/packages/next-drupal/tests/DrupalClient/basic-methods.test.ts b/packages/next-drupal/tests/DrupalClient/basic-methods.test.ts new file mode 100644 index 00000000..c8684a47 --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/basic-methods.test.ts @@ -0,0 +1,597 @@ +import { afterEach, describe, expect, jest, test } from "@jest/globals" +import { NextApiRequest, NextApiResponse } from "next" +import { DRAFT_DATA_COOKIE_NAME, DrupalClient, JsonApiErrors } from "../../src" +import { BASE_URL, mockLogger, spyOnFetch, spyOnFetchOnce } from "../utils" +import type { DrupalNode, JsonApiError, Serializer } from "../../src" + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe("buildMenuTree()", () => { + test.todo("add tests") +}) + +describe("buildUrl()", () => { + const client = new DrupalClient(BASE_URL) + + test("builds a url", () => { + expect(client.buildUrl("http://example.com").toString()).toEqual( + "http://example.com/" + ) + }) + + test("builds a relative url", () => { + expect(client.buildUrl("/foo").toString()).toEqual(`${BASE_URL}/foo`) + }) + + test("builds a url with params", () => { + expect(client.buildUrl("/foo", { bar: "baz" }).toString()).toEqual( + `${BASE_URL}/foo?bar=baz` + ) + + expect( + client + .buildUrl("/jsonapi/node/article", { + sort: "-created", + "fields[node--article]": "title,path", + }) + .toString() + ).toEqual( + `${BASE_URL}/jsonapi/node/article?sort=-created&fields%5Bnode--article%5D=title%2Cpath` + ) + }) + + test("builds a url from object (DrupalJsonApiParams)", () => { + const params = { + getQueryObject: () => ({ + sort: "-created", + "fields[node--article]": "title,path", + }), + } + + expect(client.buildUrl("/jsonapi/node/article", params).toString()).toEqual( + `${BASE_URL}/jsonapi/node/article?sort=-created&fields%5Bnode--article%5D=title%2Cpath` + ) + }) +}) + +describe("debug()", () => { + test("does not print messages by default", () => { + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { logger }) + const message = "Example message" + client.debug(message) + expect(logger.debug).not.toHaveBeenCalled() + }) + + test("prints messages when debugging on", () => { + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { logger, debug: true }) + const message = "Example message" + client.debug(message) + expect(logger.debug).toHaveBeenCalledWith("Debug mode is on.") + expect(logger.debug).toHaveBeenCalledWith(message) + }) +}) + +describe("deserialize()", () => { + test("deserializes JSON:API resource", async () => { + const client = new DrupalClient(BASE_URL) + const url = client.buildUrl( + "/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053", + { + include: "field_tags", + } + ) + + const response = await client.fetch(url.toString()) + const json = await response.json() + const article = client.deserialize(json) as DrupalNode + + expect(article).toMatchSnapshot() + expect(article.id).toEqual("52837ad0-f218-46bd-a106-5710336b7053") + expect(article.field_tags).toHaveLength(3) + }) + + test("deserializes JSON:API collection", async () => { + const client = new DrupalClient(BASE_URL) + const url = client.buildUrl("/jsonapi/node/article", { + getQueryObject: () => ({ + "fields[node--article]": "title", + }), + }) + + const response = await client.fetch(url.toString()) + const json = await response.json() + const articles = client.deserialize(json) as DrupalNode[] + + expect(articles).toMatchSnapshot() + }) + + test("allows for custom data serializer", async () => { + const serializer: Serializer = { + deserialize: ( + body: { data: { id: string; attributes: { title: string } } }, + options: { pathPrefix: string } + ) => { + return { + id: body.data.id, + title: `${options.pathPrefix}: ${body.data.attributes.title}`, + } + }, + } + const client = new DrupalClient(BASE_URL, { + serializer, + }) + const url = client.buildUrl( + "/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053" + ) + + const response = await client.fetch(url.toString()) + const json = await response.json() + const article = client.deserialize(json, { + pathPrefix: "TITLE", + }) as DrupalNode + + expect(article).toMatchSnapshot() + expect(article.id).toEqual("52837ad0-f218-46bd-a106-5710336b7053") + expect(article.title).toEqual(`TITLE: ${json.data.attributes.title}`) + }) + + test("returns null if no body", () => { + const client = new DrupalClient(BASE_URL) + expect(client.deserialize("")).toBe(null) + }) +}) + +describe("formatJsonApiErrors()", () => { + const errors: JsonApiError[] = [ + { + status: "404", + title: "First error", + }, + { + status: "500", + title: "Second error", + detail: "is ignored", + }, + ] + const client = new DrupalClient(BASE_URL) + + test("formats the first error in the array", () => { + expect(client.formatJsonApiErrors(errors)).toBe("404 First error") + }) + + test("includes the optional error detail", () => { + expect( + client.formatJsonApiErrors([ + { + ...errors[0], + detail: "Detail is included.", + }, + errors[1], + ]) + ).toBe("404 First error\nDetail is included.") + }) +}) + +describe("getErrorsFromResponse()", () => { + const client = new DrupalClient(BASE_URL) + + test("returns application/json error message", async () => { + const message = "An error occurred." + const response = new Response(JSON.stringify({ message }), { + status: 403, + headers: { + "content-type": "application/json", + }, + }) + + expect(await client.getErrorsFromResponse(response)).toBe(message) + }) + + test("returns application/vnd.api+json errors", async () => { + const payload = { + errors: [ + { + status: "404", + title: "Not found", + detail: "Oops.", + }, + { + status: "418", + title: "I am a teapot", + detail: "Even RFCs have easter eggs.", + }, + ] as JsonApiError[], + } + const response = new Response(JSON.stringify(payload), { + status: 403, + headers: { + "content-type": "application/vnd.api+json", + }, + }) + + expect(await client.getErrorsFromResponse(response)).toMatchObject( + payload.errors + ) + }) + + test("returns the response status text if the application/vnd.api+json errors cannot be found", async () => { + const payload = { + contains: 'no "errors" entry', + } + const response = new Response(JSON.stringify(payload), { + status: 418, + statusText: "I'm a Teapot", + headers: { + "content-type": "application/vnd.api+json", + }, + }) + + expect(await client.getErrorsFromResponse(response)).toBe("I'm a Teapot") + }) + + test("returns the response status text if no errors can be found", async () => { + const response = new Response(JSON.stringify({}), { + status: 403, + statusText: "Forbidden", + }) + + expect(await client.getErrorsFromResponse(response)).toBe("Forbidden") + }) +}) + +describe("preview()", () => { + // Get values from our mocked request. + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { slug, resourceVersion, plugin, secret, ...draftData } = + new NextApiRequest().query + const dataCookie = `${DRAFT_DATA_COOKIE_NAME}=${encodeURIComponent( + JSON.stringify({ slug, resourceVersion, ...draftData }) + )}; Path=/; HttpOnly; SameSite=None; Secure` + const validationPayload = { + slug, + maxAge: 30, + } + + test("turns on preview mode and clears preview data", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + spyOnFetch({ responseBody: validationPayload }) + + await client.preview(request, response) + + expect(response.clearPreviewData).toBeCalledTimes(1) + expect(response.setPreviewData).toBeCalledWith({ + resourceVersion, + plugin, + ...validationPayload, + }) + }) + + test("does not enable preview mode if validation fails", async () => { + const logger = mockLogger() + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL, { debug: true, logger }) + const status = 403 + const message = "mock fail" + spyOnFetch({ + responseBody: { message }, + status, + headers: { + "Content-Type": "application/json", + }, + }) + + await client.preview(request, response) + + expect(logger.debug).toBeCalledWith( + `Draft url validation error: ${message}` + ) + expect(response.setPreviewData).toBeCalledTimes(0) + expect(response.statusCode).toBe(status) + expect(response.json).toBeCalledWith({ message }) + }) + + test("does not turn on draft mode by default", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + spyOnFetch({ responseBody: validationPayload }) + + await client.preview(request, response) + + expect(response.setDraftMode).toBeCalledTimes(0) + + // Also check for no draft data cookie. + const cookies = response.getHeader("Set-Cookie") + expect(cookies[cookies.length - 1]).not.toBe(dataCookie) + }) + + test("optionally turns on draft mode", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { + debug: true, + logger, + }) + spyOnFetch({ responseBody: validationPayload }) + + const options = { enable: true } + await client.preview(request, response, options) + + expect(response.setDraftMode).toBeCalledWith(options) + + // Also check for draft data cookie. + const cookies = response.getHeader("Set-Cookie") + expect(cookies[cookies.length - 1]).toBe(dataCookie) + + expect(logger.debug).toHaveBeenLastCalledWith("Draft mode enabled.") + }) + + test("updates preview mode cookie’s sameSite flag", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + spyOnFetch({ responseBody: validationPayload }) + + // Our mock response.setPreviewData() does not set a cookie, so we set one. + const previewCookie = + "__next_preview_data=secret-data; Path=/; HttpOnly; SameSite=Lax" + response.setHeader("Set-Cookie", [ + previewCookie, + ...response.getHeader("Set-Cookie"), + ]) + + const cookies = response.getHeader("Set-Cookie") + cookies[0] = cookies[0].replace("SameSite=Lax", "SameSite=None; Secure") + + await client.preview(request, response) + + expect(response.getHeader).toHaveBeenLastCalledWith("Set-Cookie") + expect(response.setHeader).toHaveBeenLastCalledWith("Set-Cookie", cookies) + expect(response.getHeader("Set-Cookie")).toStrictEqual(cookies) + }) + + test("redirects to the slug path", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { debug: true, logger }) + spyOnFetch({ responseBody: validationPayload }) + + await client.preview(request, response) + + expect(response.setPreviewData).toBeCalledWith({ + resourceVersion, + plugin, + ...validationPayload, + }) + expect(response.writeHead).toBeCalledWith(307, { Location: slug }) + expect(logger.debug).toHaveBeenLastCalledWith("Preview mode enabled.") + }) + + test("returns a 422 response on error", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { debug: true, logger }) + const message = "mock internal error" + response.clearPreviewData = jest.fn(() => { + throw new Error(message) + }) + + await client.preview(request, response) + + expect(logger.debug).toHaveBeenLastCalledWith(`Preview failed: ${message}`) + expect(response.status).toBeCalledWith(422) + expect(response.end).toHaveBeenCalled() + }) +}) + +describe("previewDisable()", () => { + test("clears preview data", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + + await client.previewDisable(request, response) + expect(response.clearPreviewData).toBeCalledTimes(1) + }) + + test("disables draft mode", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + + await client.previewDisable(request, response) + expect(response.setDraftMode).toBeCalledWith({ enable: false }) + }) + + test("deletes the draft cookie", async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + + await client.previewDisable(request, response) + const cookies = response.getHeader("Set-Cookie") + expect(cookies[cookies.length - 1]).toBe( + `${DRAFT_DATA_COOKIE_NAME}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=None; Secure` + ) + }) + + test('redirects to "/"', async () => { + const request = new NextApiRequest() + const response = new NextApiResponse() + const client = new DrupalClient(BASE_URL) + + await client.previewDisable(request, response) + expect(response.writeHead).toBeCalledWith(307, { Location: "/" }) + expect(response.end).toBeCalled() + }) +}) + +describe("throwError()", () => { + test("throws the error", () => { + const client = new DrupalClient(BASE_URL) + expect(() => { + client.throwError(new Error("Example error")) + }).toThrow("Example error") + }) + + test("logs the error when throwJsonApiErrors is false", () => { + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { + throwJsonApiErrors: false, + logger, + }) + expect(() => { + client.throwError(new Error("Example error")) + }).not.toThrow() + expect(logger.error).toHaveBeenCalledWith(new Error("Example error")) + }) +}) + +describe("throwIfJsonApiErrors()", () => { + const client = new DrupalClient(BASE_URL) + + test("does not throw if response is ok", async () => { + expect.assertions(1) + + const response = new Response(JSON.stringify({})) + + await expect(client.throwIfJsonApiErrors(response)).resolves.toBe(undefined) + }) + + test("throws a JsonApiErrors object", async () => { + expect.assertions(1) + + const payload = { + errors: [ + { + status: "404", + title: "Not found", + detail: "Oops.", + }, + { + status: "418", + title: "I am a teapot", + detail: "Even RFCs have easter eggs.", + }, + ] as JsonApiError[], + } + const status = 403 + const response = new Response(JSON.stringify(payload), { + status, + headers: { + "content-type": "application/vnd.api+json", + }, + }) + + const expectedError = new JsonApiErrors(payload.errors, status) + await expect(client.throwIfJsonApiErrors(response)).rejects.toEqual( + expectedError + ) + }) +}) + +describe("validateDraftUrl()", () => { + test("outputs debug messages", async () => { + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { + debug: true, + logger, + }) + const slug = "/example" + const searchParams = new URLSearchParams({ + slug, + }) + + const testPayload = { test: "resolved" } + spyOnFetchOnce({ + responseBody: testPayload, + }) + spyOnFetchOnce({ + responseBody: { + message: "fail", + }, + status: 404, + }) + + let response = await client.validateDraftUrl(searchParams) + expect(response.status).toBe(200) + expect(logger.debug).toHaveBeenCalledWith("Debug mode is on.") + expect(logger.debug).toHaveBeenCalledWith( + `Fetching draft url validation for ${slug}.` + ) + expect(logger.debug).toHaveBeenCalledWith(`Validated slug, ${slug}`) + + response = await client.validateDraftUrl(searchParams) + expect(response.status).toBe(404) + expect(logger.debug).toHaveBeenCalledWith( + `Could not validate slug, ${slug}` + ) + }) + + test("calls draft-url endpoint", async () => { + const client = new DrupalClient(BASE_URL) + const searchParams = new URLSearchParams({ + slug: "/example", + }) + + const testPayload = { test: "resolved" } + const fetchSpy = spyOnFetch({ responseBody: testPayload }) + + await client.validateDraftUrl(searchParams) + + expect(fetchSpy).toHaveBeenNthCalledWith( + 1, + `${BASE_URL}/next/draft-url`, + expect.objectContaining({ + method: "POST", + headers: { + Accept: "application/vnd.api+json", + "Content-Type": "application/json", + }, + body: JSON.stringify(Object.fromEntries(searchParams.entries())), + }) + ) + }) + + test("returns a response object on success", async () => { + const client = new DrupalClient(BASE_URL) + const searchParams = new URLSearchParams({ + slug: "/example", + }) + + const testPayload = { test: "resolved" } + spyOnFetch({ responseBody: testPayload }) + + const response = await client.validateDraftUrl(searchParams) + + expect(response.ok).toBe(true) + expect(response.status).toBe(200) + expect(await response.json()).toMatchObject(testPayload) + }) + + test("returns a response if fetch throws", async () => { + const client = new DrupalClient(BASE_URL) + const searchParams = new URLSearchParams({ + slug: "/example", + }) + + const message = "random fetch error" + spyOnFetch({ throwErrorMessage: message }) + + const response = await client.validateDraftUrl(searchParams) + + expect(response.ok).toBe(false) + expect(response.status).toBe(401) + expect(await response.json()).toMatchObject({ message }) + }) +}) diff --git a/packages/next-drupal/tests/DrupalClient/constructor.test.ts b/packages/next-drupal/tests/DrupalClient/constructor.test.ts new file mode 100644 index 00000000..b31dba4e --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/constructor.test.ts @@ -0,0 +1,333 @@ +import { afterEach, describe, expect, jest, test } from "@jest/globals" +import { Jsona } from "jsona" +import { DrupalClient } from "../../src" +import { DEBUG_MESSAGE_PREFIX, logger as defaultLogger } from "../../src/logger" +import { BASE_URL } from "../utils" +import type { Logger } from "../../src" + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe("baseUrl parameter", () => { + const env = process.env + + beforeEach(() => { + jest.resetModules() + process.env = { ...env } + }) + + afterEach(() => { + process.env = env + }) + + test("throws error given an invalid baseUrl", () => { + // @ts-ignore + expect(() => new DrupalClient()).toThrow("The 'baseUrl' param is required.") + + // @ts-ignore + expect(() => new DrupalClient({})).toThrow( + "The 'baseUrl' param is required." + ) + }) + + test("turns throwJsonApiErrors off in production", () => { + process.env = { + ...process.env, + NODE_ENV: "production", + } + + const client = new DrupalClient(BASE_URL) + expect(client.throwJsonApiErrors).toBe(false) + }) + + test("announces debug mode when turned on", () => { + const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { + // + }) + + new DrupalClient(BASE_URL, { + debug: true, + }) + + expect(consoleSpy).toHaveBeenCalledWith( + DEBUG_MESSAGE_PREFIX, + "Debug mode is on." + ) + }) + + test("returns a DrupalClient", () => { + expect(new DrupalClient(BASE_URL)).toBeInstanceOf(DrupalClient) + }) +}) + +describe("options parameter", () => { + describe("accessToken", () => { + test("defaults to `undefined`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.accessToken).toBe(undefined) + }) + + test("sets the accessToken", async () => { + const accessToken = { + token_type: "Bearer", + expires_in: 300, + access_token: + "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImVlNDkyOTI4ZTZjNj", + } + + const client = new DrupalClient(BASE_URL, { + accessToken, + }) + + expect(client.accessToken).toEqual(accessToken) + }) + }) + + describe("apiPrefix", () => { + test('defaults to "/jsonapi"', () => { + const client = new DrupalClient(BASE_URL) + expect(client.apiPrefix).toBe("/jsonapi") + }) + + test("sets the apiPrefix", () => { + const customEndPoint = "/customapi" + const client = new DrupalClient(BASE_URL, { + apiPrefix: customEndPoint, + }) + expect(client.apiPrefix).toBe(customEndPoint) + }) + }) + + describe("auth", () => { + test("defaults to `undefined`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.auth).toBe(undefined) + }) + + test("sets the auth credentials", () => { + const auth: DrupalClient["auth"] = { + username: "example", + password: "pw", + } + const client = new DrupalClient(BASE_URL, { + auth, + }) + expect(client._auth).toMatchObject({ + ...auth, + url: "/oauth/token", + }) + }) + }) + + describe("cache", () => { + test("defaults to `null`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.cache).toBe(null) + }) + + test("sets the cache storage", () => { + const customCache: DrupalClient["cache"] = { + async get(key) { + // + }, + async set(key, value, ttl?: number) { + // + }, + } + const client = new DrupalClient(BASE_URL, { + cache: customCache, + }) + expect(client.cache).toBe(customCache) + }) + }) + + describe("debug", () => { + test("defaults to `false`", () => { + const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { + // + }) + + new DrupalClient(BASE_URL) + + expect(consoleSpy).toBeCalledTimes(0) + }) + + test("turns on debug mode", () => { + const consoleSpy = jest.spyOn(console, "debug").mockImplementation(() => { + // + }) + + new DrupalClient(BASE_URL, { debug: true }) + + expect(consoleSpy).toBeCalledTimes(1) + }) + }) + + describe("fetcher", () => { + test("defaults to `undefined`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.fetcher).toBe(undefined) + }) + + test("sets up a custom fetcher", () => { + const customFetcher: DrupalClient["fetcher"] = async () => { + // + } + const client = new DrupalClient(BASE_URL, { + fetcher: customFetcher, + }) + expect(client.fetcher).toBe(customFetcher) + }) + }) + + describe("frontPage", () => { + test('defaults to "/home"', () => { + const client = new DrupalClient(BASE_URL) + expect(client.frontPage).toBe("/home") + }) + + test("sets up a custom frontPage", () => { + const customFrontPage = "/front" + + const client = new DrupalClient(BASE_URL, { + frontPage: customFrontPage, + }) + expect(client.frontPage).toBe(customFrontPage) + }) + }) + + describe("headers", () => { + test("defaults to `Content-Type`/`Accept`", () => { + const client = new DrupalClient(BASE_URL) + expect(client._headers).toMatchObject({ + "Content-Type": "application/vnd.api+json", + Accept: "application/vnd.api+json", + }) + }) + + test("sets custom headers", () => { + const customHeaders = { + CustomContentType: "application/json", + CustomAccept: "application/json", + } + + const client = new DrupalClient(BASE_URL, { + headers: customHeaders, + }) + expect(client._headers).toMatchObject(customHeaders) + }) + }) + + describe("logger", () => { + test("defaults to `console`-based `Logger`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.logger).toBe(defaultLogger) + }) + + test("sets up a custom logger", () => { + const customLogger: Logger = { + log: () => { + // + }, + debug: () => { + // + }, + warn: () => { + // + }, + error: () => { + // + }, + } + + const client = new DrupalClient(BASE_URL, { + logger: customLogger, + }) + expect(client.logger).toBe(customLogger) + }) + }) + + describe("previewSecret", () => { + test("defaults to `undefined`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.previewSecret).toBe(undefined) + }) + + test("sets up a custom previewSecret", () => { + const customPreviewSecret = "custom-secret-value" + + const client = new DrupalClient(BASE_URL, { + previewSecret: customPreviewSecret, + }) + expect(client.previewSecret).toBe(customPreviewSecret) + }) + }) + + describe("serializer", () => { + test("defaults to `new Jsona()`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.serializer).toBeInstanceOf(Jsona) + }) + + test("sets up a custom serializer", () => { + const customSerializer: DrupalClient["serializer"] = { + deserialize( + body: Record, + options?: Record + ): unknown { + return { + deserialized: true, + } + }, + } + + const client = new DrupalClient(BASE_URL, { + serializer: customSerializer, + }) + expect(client.serializer).toBe(customSerializer) + }) + }) + + describe("throwJsonApiErrors", () => { + test("defaults to `true`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.throwJsonApiErrors).toBe(true) + }) + + test("can be set to `false`", () => { + const client = new DrupalClient(BASE_URL, { + throwJsonApiErrors: false, + }) + expect(client.throwJsonApiErrors).toBe(false) + }) + }) + + describe("useDefaultResourceTypeEntry", () => { + test("defaults to `false`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.useDefaultResourceTypeEntry).toBe(false) + }) + + test("can be set to `true`", () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + }) + expect(client.useDefaultResourceTypeEntry).toBe(true) + }) + }) + + describe("withAuth", () => { + test("defaults to `false`", () => { + const client = new DrupalClient(BASE_URL) + expect(client.withAuth).toBe(false) + }) + + test("can be set to `true`", () => { + const client = new DrupalClient(BASE_URL, { + withAuth: true, + }) + expect(client.withAuth).toBe(true) + }) + }) +}) diff --git a/packages/next-drupal/tests/crud.test.ts b/packages/next-drupal/tests/DrupalClient/crud-methods.test.ts similarity index 67% rename from packages/next-drupal/tests/crud.test.ts rename to packages/next-drupal/tests/DrupalClient/crud-methods.test.ts index ed9a00b2..cb8e4015 100644 --- a/packages/next-drupal/tests/crud.test.ts +++ b/packages/next-drupal/tests/DrupalClient/crud-methods.test.ts @@ -1,10 +1,25 @@ -import { expect } from "@jest/globals" -import { DrupalClient } from "../src/client" -import type { DrupalNode } from "../src/types" -import { BASE_URL, deleteTestNodes, toggleDrupalModule } from "./utils" +import { + afterAll, + afterEach, + beforeAll, + describe, + expect, + jest, + test, +} from "@jest/globals" +import { DrupalClient } from "../../src" +import { + BASE_URL, + deleteTestNodes, + toggleDrupalModule, + mocks, + mockLogger, + spyOnFetch, +} from "../utils" +import type { DrupalNode, JsonApiCreateFileResourceBody } from "../../src" // Enabling and disabling modules takes longer. -// So we increase the time out to handle this. +// So we increase the timeout to 10 seconds to handle this. jest.setTimeout(10000) beforeAll(async () => { @@ -21,8 +36,8 @@ afterAll(async () => { await deleteTestNodes() }) -describe("createResource", () => { - test("it creates a resource", async () => { +describe("createResource()", () => { + test("creates a resource", async () => { const client = new DrupalClient(BASE_URL) const article = await client.createResource( @@ -46,7 +61,7 @@ describe("createResource", () => { expect(article.title).toEqual("TEST New article") }) - test("it creates a resource with a relationship", async () => { + test("creates a resource with a relationship", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -92,7 +107,7 @@ describe("createResource", () => { expect(article.field_media_image.name).toEqual(mediaImage.name) }) - test("it creates a localized resource", async () => { + test("creates a localized resource", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -112,7 +127,7 @@ describe("createResource", () => { expect(article.langcode).toEqual("es") }) - test("it throws an error for missing required attributes", async () => { + test("throws an error for missing required attributes", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -131,7 +146,7 @@ describe("createResource", () => { ) }) - test("it throws an error for invalid attributes", async () => { + test("throws an error for invalid attributes", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -172,8 +187,115 @@ describe("createResource", () => { }) }) -describe("updateResource", () => { - test("it updates a resource", async () => { +describe("createFileResource()", () => { + const mockBody: JsonApiCreateFileResourceBody = { + data: { + attributes: { + type: "file--file", + field: "field_media_image", + filename: "mediterranean-quiche-umami.jpg", + file: Buffer.from("mock-file-data"), + }, + }, + } + const mockResponseData = mocks.resources.file + + test("constructs the API path from body and options", async () => { + const logger = mockLogger() + const client = new DrupalClient("https://example.com", { + useDefaultResourceTypeEntry: true, + debug: true, + logger, + }) + const type = "type--from-first-argument" + const fetchSpy = spyOnFetch({ responseBody: mockResponseData }) + + await client.createFileResource(type, mockBody, { + withAuth: false, + params: { include: "extra_field" }, + }) + + expect(logger.debug).toBeCalledWith( + `Creating file resource for media of type ${type}.` + ) + expect(fetchSpy.mock.lastCall[0]).toBe( + "https://example.com/jsonapi/file/file/field_media_image?include=extra_field" + ) + }) + + test("constructs the API path using non-default locale", async () => { + const client = new DrupalClient("https://example.com", { + useDefaultResourceTypeEntry: true, + }) + const type = "type--from-first-argument" + const fetchSpy = spyOnFetch({ responseBody: mockResponseData }) + + await client.createFileResource(type, mockBody, { + withAuth: false, + params: { include: "extra_field" }, + locale: "es", + defaultLocale: "en", + }) + + expect(fetchSpy.mock.lastCall[0]).toBe( + "https://example.com/es/jsonapi/file/file/field_media_image?include=extra_field" + ) + }) + + test("returns the deserialized data", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + }) + spyOnFetch({ responseBody: mockResponseData }) + + const result = await client.createFileResource("ignored", mockBody, { + withAuth: false, + }) + + expect(result?.filename).toBe(mockResponseData.data.attributes.filename) + expect(result?.data?.attributes?.filename).toBe(undefined) + }) + + test("optionally returns the raw data", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + }) + spyOnFetch({ responseBody: mockResponseData }) + + const result = await client.createFileResource("ignored", mockBody, { + withAuth: false, + deserialize: false, + }) + + expect(result?.filename).toBe(undefined) + expect(result?.data?.attributes?.filename).toBe( + mockResponseData.data.attributes.filename + ) + }) + + test("throws error if response is not ok", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + }) + const message = "mock error" + spyOnFetch({ + responseBody: { message }, + status: 403, + headers: { + "content-type": "application/json", + }, + }) + + await expect( + client.createFileResource("ignored", mockBody, { + withAuth: false, + }) + ).rejects.toThrow(message) + }) +}) + +describe("updateResource()", () => { + test("updates a resource", async () => { const client = new DrupalClient(BASE_URL) const basic = Buffer.from( @@ -213,7 +335,7 @@ describe("updateResource", () => { expect(updatedArticle.title).toEqual("TEST New article updated") }) - test("it updates a resource with a relationship", async () => { + test("updates a resource with a relationship", async () => { const basic = Buffer.from( `${process.env.DRUPAL_USERNAME}:${process.env.DRUPAL_PASSWORD}` ).toString("base64") @@ -273,7 +395,7 @@ describe("updateResource", () => { expect(updatedArticle.field_media_image.name).toEqual(mediaImage.name) }) - test("it throws an error for missing required attributes", async () => { + test("throws an error for missing required attributes", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -302,7 +424,7 @@ describe("updateResource", () => { ) }) - test("it throws an error for invalid attributes", async () => { + test("throws an error for invalid attributes", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -349,8 +471,8 @@ describe("updateResource", () => { }) }) -describe("deleteResource", () => { - test("it deletes a resource", async () => { +describe("deleteResource()", () => { + test("deletes a resource", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, @@ -377,7 +499,7 @@ describe("deleteResource", () => { ) }) - test("it throws an error for invalid resource", async () => { + test("throws an error for invalid resource", async () => { const client = new DrupalClient(BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, diff --git a/packages/next-drupal/tests/DrupalClient/fetch-related-methods.test.ts b/packages/next-drupal/tests/DrupalClient/fetch-related-methods.test.ts new file mode 100644 index 00000000..1bdfe463 --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/fetch-related-methods.test.ts @@ -0,0 +1,1186 @@ +import { afterEach, describe, expect, jest, test } from "@jest/globals" +import { DrupalClient } from "../../src" +import { + BASE_URL, + mockLogger, + mocks, + spyOnFetch, + spyOnFetchOnce, +} from "../utils" +import type { + AccessToken, + DrupalClientAuth, + DrupalNode, + DrupalSearchApiJsonApiResponse, +} from "../../src" + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe("fetch()", () => { + test("allows fetching custom url", async () => { + const client = new DrupalClient(BASE_URL) + const url = client.buildUrl( + "/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053" + ) + + const response = await client.fetch(url.toString()) + expect(response.headers.get("content-type")).toEqual( + "application/vnd.api+json" + ) + const json = await response.json() + expect(json).toMatchSnapshot() + }) + + test("allows for custom fetcher", async () => { + const customFetch = jest.fn() + + const client = new DrupalClient(BASE_URL, { + fetcher: customFetch, + }) + const url = client.buildUrl("/jsonapi").toString() + + await client.fetch(url) + expect(customFetch).toHaveBeenCalledWith( + url, + expect.objectContaining({ + headers: { + "Content-Type": "application/vnd.api+json", + Accept: "application/vnd.api+json", + }, + }) + ) + + await client.fetch(url, { + headers: { + foo: "bar", + }, + }) + expect(customFetch).toHaveBeenLastCalledWith( + url, + expect.objectContaining({ + headers: { + Accept: "application/vnd.api+json", + "Content-Type": "application/vnd.api+json", + foo: "bar", + }, + }) + ) + }) + + describe("authentication", () => { + const clientIdSecret = mocks.auth.clientIdSecret + + test("throws an error if withAuth is called when auth is not configured", async () => { + const client = new DrupalClient(BASE_URL) + + const url = client.buildUrl("/jsonapi") + + await expect( + client.fetch(url.toString(), { + withAuth: true, + }) + ).rejects.toThrow("auth is not configured.") + }) + + test("accepts username and password", async () => { + const customFetch = jest.fn() + + const client = new DrupalClient(BASE_URL, { + auth: { + username: "admin", + password: "password", + }, + fetcher: customFetch, + }) + const url = client.buildUrl("/jsonapi").toString() + + await client.fetch(url, { withAuth: true }) + expect(customFetch).toHaveBeenCalledWith( + url, + expect.objectContaining({ + headers: { + "Content-Type": "application/vnd.api+json", + Accept: "application/vnd.api+json", + Authorization: "Basic YWRtaW46cGFzc3dvcmQ=", + }, + withAuth: true, + }) + ) + }) + + test("accepts callback", async () => { + const customAuth = jest + .fn() + .mockReturnValue( + "Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=" + ) as DrupalClientAuth + const customFetch = jest.fn() + + const client = new DrupalClient(BASE_URL, { + auth: customAuth, + fetcher: customFetch, + }) + const url = client.buildUrl("/jsonapi").toString() + + await client.fetch(url, { withAuth: true }) + expect(customFetch).toHaveBeenCalledWith( + url, + expect.objectContaining({ + headers: { + "Content-Type": "application/vnd.api+json", + Accept: "application/vnd.api+json", + Authorization: "Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=", + }, + withAuth: true, + }) + ) + }) + + test("accepts clientId and clientSecret", async () => { + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + }) + const fetchSpy = spyOnFetch() + + const basic = Buffer.from( + `${clientIdSecret.clientId}:${clientIdSecret.clientSecret}` + ).toString("base64") + + await client.fetch("http://example.com", { withAuth: true }) + expect(fetchSpy).toHaveBeenNthCalledWith( + 1, + `${BASE_URL}/oauth/token`, + expect.objectContaining({ + headers: { + Accept: "application/json", + Authorization: `Basic ${basic}`, + "Content-Type": "application/x-www-form-urlencoded", + }, + }) + ) + }) + + test("accepts custom auth url", async () => { + const client = new DrupalClient(BASE_URL, { + auth: { + ...clientIdSecret, + url: "/custom/oauth", + }, + }) + const fetchSpy = spyOnFetch() + + await client.fetch("http://example.com", { withAuth: true }) + expect(fetchSpy).toHaveBeenNthCalledWith( + 1, + `${BASE_URL}/custom/oauth`, + expect.anything() + ) + }) + }) + + describe("headers", () => { + // TODO: Are these duplicates of getters-setters/headers tests? + test("allows setting custom headers", async () => { + const customFetch = jest.fn() + const client = new DrupalClient(BASE_URL, { + fetcher: customFetch, + }) + client.headers = { + foo: "bar", + } + + const url = "http://example.com" + + await client.fetch(url) + expect(customFetch).toHaveBeenCalledWith( + url, + expect.objectContaining({ + headers: { foo: "bar" }, + }) + ) + }) + + test("allows setting custom headers with custom auth", async () => { + const customFetch = jest.fn() + const client = new DrupalClient(BASE_URL, { + fetcher: customFetch, + headers: { + foo: "bar", + }, + auth: jest + .fn() + .mockReturnValue( + "Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=" + ) as DrupalClientAuth, + }) + + const url = "http://example.com" + + await client.fetch(url, { withAuth: true }) + + expect(customFetch).toHaveBeenCalledWith( + url, + expect.objectContaining({ + headers: { + foo: "bar", + Authorization: "Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=", + }, + withAuth: true, + }) + ) + }) + }) +}) + +describe("getAccessToken()", () => { + const accessToken = mocks.auth.accessToken + const clientIdSecret = mocks.auth.clientIdSecret + + test("uses the long-lived access token from constructor", async () => { + const longLivedAccessToken: AccessToken = { + ...accessToken, + expires_in: 360000, + } + const client = new DrupalClient(BASE_URL, { + accessToken: longLivedAccessToken, + }) + const fetchSpy = spyOnFetch({ + responseBody: { + ...accessToken, + access_token: "not-used", + }, + }) + + const token = await client.getAccessToken({ + clientId: "", + clientSecret: "", + scope: undefined, + }) + expect(fetchSpy).toHaveBeenCalledTimes(0) + expect(token).toBe(longLivedAccessToken) + }) + + test("throws if auth is not configured", async () => { + const fetchSpy = spyOnFetch({ + responseBody: accessToken, + }) + + const client = new DrupalClient(BASE_URL) + + await expect( + // @ts-ignore + client.getAccessToken({ clientId: clientIdSecret.clientId }) + ).rejects.toThrow( + "auth is not configured. See https://next-drupal.org/docs/client/auth" + ) + expect(fetchSpy).toHaveBeenCalledTimes(0) + }) + + test("BUG: throws if auth is ClientIdSecret and not given as opts", async () => { + const fetchSpy = spyOnFetch({ + responseBody: accessToken, + }) + + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + withAuth: true, + }) + + await expect( + // @ts-ignore + client.getAccessToken({ scope: "irrelevant" }) + ).rejects.toThrow( + "'clientId' and 'clientSecret' required. See https://next-drupal.org/docs/client/auth" + ) + expect(fetchSpy).toHaveBeenCalledTimes(0) + }) + + test("fetches an access token", async () => { + spyOnFetch({ + responseBody: accessToken, + }) + + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + debug: true, + logger, + }) + + const token = await client.getAccessToken() + expect(token).toEqual(accessToken) + expect(logger.debug).toHaveBeenCalledWith("Fetching new access token.") + }) + + test("re-uses access token", async () => { + spyOnFetchOnce({ + responseBody: accessToken, + }) + const fetchSpy = spyOnFetchOnce({ + responseBody: { + ...accessToken, + access_token: "differentAccessToken", + expires_in: 1800, + }, + }) + + const logger = mockLogger() + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + debug: true, + logger, + }) + + const token1 = await client.getAccessToken() + const token2 = await client.getAccessToken() + expect(token1).toEqual(token2) + expect(logger.debug).toHaveBeenLastCalledWith( + "Using existing access token." + ) + expect(fetchSpy).toHaveBeenCalledTimes(1) + }) +}) + +describe("getEntryForResourceType()", () => { + test("returns the JSON:API entry for a resource type", async () => { + const client = new DrupalClient(BASE_URL) + const getIndexSpy = jest.spyOn(client, "getIndex") + + const recipeEntry = await client.getEntryForResourceType("node--recipe") + expect(recipeEntry).toMatch(`${BASE_URL}/en/jsonapi/node/recipe`) + expect(getIndexSpy).toHaveBeenCalledTimes(1) + + const articleEntry = await client.getEntryForResourceType("node--article") + expect(articleEntry).toMatch(`${BASE_URL}/en/jsonapi/node/article`) + expect(getIndexSpy).toHaveBeenCalledTimes(2) + }) + + test("assembles JSON:API entry without fetching index", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + }) + const getIndexSpy = jest.spyOn(client, "getIndex") + + const recipeEntry = await client.getEntryForResourceType("node--article") + expect(recipeEntry).toMatch(`${BASE_URL}/jsonapi/node/article`) + expect(getIndexSpy).toHaveBeenCalledTimes(0) + }) + + test("throws an error if resource type does not exist", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getEntryForResourceType("RESOURCE-DOES-NOT-EXIST") + ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") + }) +}) + +describe("getIndex()", () => { + test("fetches the JSON:API index", async () => { + const client = new DrupalClient(BASE_URL) + const index = await client.getIndex() + + expect(index).toMatchSnapshot() + }) + + test("fetches the JSON:API index with locale", async () => { + const client = new DrupalClient(BASE_URL) + const index = await client.getIndex("es") + + expect(index).toMatchSnapshot() + }) + + test("throws error for invalid base url", async () => { + const client = new DrupalClient("https://example.com") + + await expect(client.getIndex()).rejects.toThrow( + "Failed to fetch JSON:API index at https://example.com/jsonapi" + ) + }) +}) + +describe("getMenu()", () => { + test("fetches menu items for a menu", async () => { + const client = new DrupalClient(BASE_URL) + + const menu = await client.getMenu("main") + + expect(menu).toMatchSnapshot() + }) + + test("fetches menu items for a menu with locale", async () => { + const client = new DrupalClient(BASE_URL) + + const menu = await client.getMenu("main", { + locale: "es", + defaultLocale: "en", + }) + + expect(menu).toMatchSnapshot() + }) + + test("fetches menu items for a menu with params", async () => { + const client = new DrupalClient(BASE_URL) + + const menu = await client.getMenu("main", { + params: { + "fields[menu_link_content--menu_link_content]": "title", + }, + }) + + expect(menu).toMatchSnapshot() + }) + + test("throws an error for invalid menu name", async () => { + const client = new DrupalClient(BASE_URL) + + await expect(client.getMenu("INVALID")).rejects.toThrow( + '404 Not Found\nThe "menu" parameter was not converted for the path "/jsonapi/menu_items/{menu}" (route name: "jsonapi_menu_items.menu")' + ) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.getMenu("main") + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getMenu("main", { withAuth: true }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) + +describe("getResource()", () => { + test("fetches a resource by uuid", async () => { + const client = new DrupalClient(BASE_URL) + const recipe = await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f" + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches a resource by uuid with params", async () => { + const client = new DrupalClient(BASE_URL) + const recipe = await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + params: { + "fields[node--recipe]": "title,field_cooking_time", + }, + } + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches a resource using locale", async () => { + const client = new DrupalClient(BASE_URL) + const recipe = await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + locale: "es", + defaultLocale: "en", + params: { + "fields[node--recipe]": "title,field_cooking_time", + }, + } + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches raw data", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + deserialize: false, + } + ) + ).resolves.toMatchSnapshot() + }) + + test("fetches a resource by revision", async () => { + const client = new DrupalClient(BASE_URL) + const recipe = await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + params: { + "fields[node--recipe]": "drupal_internal__vid", + }, + } + ) + const latestRevision = await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + params: { + resourceVersion: "rel:latest-version", + "fields[node--recipe]": "drupal_internal__vid", + }, + } + ) + + expect(recipe.drupal_internal__vid).toEqual( + latestRevision.drupal_internal__vid + ) + }) + + test("throws an error for invalid revision", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + params: { + resourceVersion: "id:-11", + "fields[node--recipe]": "title", + }, + } + ) + ).rejects.toThrow( + "404 Not Found\nThe requested version, identified by `id:-11`, could not be found." + ) + }) + + test("throws an error if revision access is forbidden", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + params: { + resourceVersion: "id:1", + "fields[node--recipe]": "title", + }, + } + ) + ).rejects.toThrow( + "403 Forbidden\nThe current user is not allowed to GET the selected resource. The user does not have access to the requested version." + ) + }) + + test("throws an error for invalid resource type", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResource( + "RESOURCE-DOES-NOT-EXIST", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f" + ) + ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") + }) + + test("throws an error for invalid params", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + params: { + include: "invalid_relationship", + }, + } + ) + ).rejects.toThrow( + "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." + ) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f" + ) + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getResource( + "node--recipe", + "71e04ead-4cc7-416c-b9ca-60b635fdc50f", + { + withAuth: true, + } + ) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) + +describe("getResourceByPath()", () => { + test("fetches a resource by path", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath("/recipes/deep-mediterranean-quiche") + ).resolves.toMatchSnapshot() + }) + + test("fetches a resource by path with params", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath("/recipes/deep-mediterranean-quiche", { + params: { + "fields[node--recipe]": "title,field_cooking_time", + }, + }) + ).resolves.toMatchSnapshot() + }) + + test("fetches a resource by path using locale", async () => { + const client = new DrupalClient(BASE_URL) + const recipe = await client.getResourceByPath( + "/recipes/quiche-mediterráneo-profundo", + { + locale: "es", + defaultLocale: "en", + params: { + "fields[node--recipe]": "title,field_cooking_time", + }, + } + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches raw data", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath("/recipes/deep-mediterranean-quiche", { + deserialize: false, + }) + ).resolves.toMatchSnapshot() + }) + + test("fetches a resource by revision", async () => { + const client = new DrupalClient(BASE_URL) + const recipe = await client.getResourceByPath( + "/recipes/deep-mediterranean-quiche", + { + params: { + "fields[node--recipe]": "drupal_internal__vid", + }, + } + ) + const latestRevision = await client.getResourceByPath( + "/recipes/deep-mediterranean-quiche", + { + params: { + resourceVersion: "rel:latest-version", + "fields[node--recipe]": "drupal_internal__vid", + }, + } + ) + + expect(recipe.drupal_internal__vid).toEqual( + latestRevision.drupal_internal__vid + ) + }) + + test("throws an error for invalid revision", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath( + "/recipes/deep-mediterranean-quiche", + { + params: { + resourceVersion: "id:-11", + "fields[node--recipe]": "title", + }, + } + ) + ).rejects.toThrow( + "404 Not Found\nThe requested version, identified by `id:-11`, could not be found." + ) + }) + + test("throws an error if revision access is forbidden", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath( + "/recipes/deep-mediterranean-quiche", + { + params: { + resourceVersion: "id:1", + "fields[node--recipe]": "title", + }, + } + ) + ).rejects.toThrow( + "403 Forbidden\nThe current user is not allowed to GET the selected resource. The user does not have access to the requested version." + ) + }) + + test("returns null for path not found", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath("/path-do-not-exist") + ).rejects.toThrow("Unable to resolve path /path-do-not-exist.") + }) + + test("throws an error for invalid params", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceByPath( + "/recipes/deep-mediterranean-quiche", + { + params: { + include: "invalid_relationship", + }, + } + ) + ).rejects.toThrow( + "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." + ) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + const getAccessTokenSpy = jest.spyOn(client, "getAccessToken") + + await client.getResourceByPath( + "/recipes/deep-mediterranean-quiche" + ) + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.not.objectContaining({ + withAuth: true, + }) + ) + expect(getAccessTokenSpy).not.toHaveBeenCalled() + }) + + test("makes authenticated requests with withAuth", async () => { + const client = new DrupalClient(BASE_URL, { + auth: mocks.auth.clientIdSecret, + }) + const fetchSpy = spyOnFetch() + const getAccessTokenSpy = jest.spyOn(client, "getAccessToken") + + await client.getResourceByPath( + "/recipes/deep-mediterranean-quiche", + { + withAuth: true, + } + ) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + expect(getAccessTokenSpy).toHaveBeenCalled() + }) + + test("returns null if path is falsey", async () => { + const client = new DrupalClient(BASE_URL) + + const resource = await client.getResourceByPath("") + expect(resource).toBe(null) + }) +}) + +describe("getResourceCollection()", () => { + test("fetches a resource collection", async () => { + const client = new DrupalClient(BASE_URL) + + const articles = await client.getResourceCollection("node--article", { + params: { + "fields[node--article]": "title", + }, + }) + + expect(articles).toMatchSnapshot() + }) + + test("fetches a resource collection using locale", async () => { + const client = new DrupalClient(BASE_URL) + + const articles = await client.getResourceCollection("node--article", { + locale: "es", + defaultLocale: "en", + params: { + "fields[node--article]": "title,langcode", + }, + }) + + expect(articles[0].langcode).toEqual("es") + + expect(articles).toMatchSnapshot() + }) + + test("fetches raw data", async () => { + const client = new DrupalClient(BASE_URL) + + const recipes = await client.getResourceCollection("node--recipe", { + deserialize: false, + params: { + "fields[node--recipe]": "title", + "page[limit]": 2, + }, + }) + + expect(recipes).toMatchSnapshot() + }) + + test("throws an error for invalid resource type", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceCollection("RESOURCE-DOES-NOT-EXIST") + ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") + }) + + test("throws an error for invalid params", async () => { + const client = new DrupalClient(BASE_URL) + + await expect( + client.getResourceCollection("node--recipe", { + params: { + include: "invalid_relationship", + }, + }) + ).rejects.toThrow( + "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." + ) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.getResourceCollection("node--recipe") + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getResourceCollection("node--recipe", { + withAuth: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) + +describe("getSearchIndex()", () => { + test("fetches a search index", async () => { + const client = new DrupalClient(BASE_URL) + + const search = await client.getSearchIndex("recipes", { + params: { + "fields[node--recipe]": "title", + }, + }) + + expect(search).toMatchSnapshot() + }) + + test("fetches a search index with locale", async () => { + const client = new DrupalClient(BASE_URL) + + const search = await client.getSearchIndex("recipes", { + locale: "es", + defaultLocale: "en", + params: { + "fields[node--recipe]": "title", + }, + }) + + expect(search).toMatchSnapshot() + }) + + test("fetches a search index with facets filters", async () => { + const client = new DrupalClient(BASE_URL) + + const search = await client.getSearchIndex( + "recipes", + { + deserialize: false, + params: { + "filter[difficulty]": "easy", + "fields[node--recipe]": "title,field_difficulty", + }, + } + ) + + expect(search).toMatchSnapshot() + expect(search.meta.facets).not.toBeNull() + }) + + test("fetches raw data from search index", async () => { + const client = new DrupalClient(BASE_URL) + + const search = await client.getSearchIndex("recipes", { + deserialize: false, + params: { + "filter[difficulty]": "easy", + "fields[node--recipe]": "title,field_difficulty", + }, + }) + + expect(search).toMatchSnapshot() + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.getSearchIndex("recipes") + + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("throws an error for invalid index", async () => { + const client = new DrupalClient(BASE_URL) + + await expect(client.getSearchIndex("INVALID-INDEX")).rejects.toThrow( + "Not Found" + ) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getSearchIndex("recipes", { + withAuth: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) + +describe("getView()", () => { + test("fetches a view", async () => { + const client = new DrupalClient(BASE_URL) + + const view = await client.getView("featured_articles--page_1") + + expect(view).toMatchSnapshot() + }) + + test("fetches a view with params", async () => { + const client = new DrupalClient(BASE_URL) + + const view = await client.getView("featured_articles--page_1", { + params: { + "fields[node--article]": "title", + }, + }) + + expect(view).toMatchSnapshot() + }) + + test("fetches a view with locale", async () => { + const client = new DrupalClient(BASE_URL) + + const view = await client.getView("featured_articles--page_1", { + locale: "es", + defaultLocale: "en", + params: { + "fields[node--article]": "title", + }, + }) + + expect(view).toMatchSnapshot() + }) + + test("fetches raw data", async () => { + const client = new DrupalClient(BASE_URL) + + const view = await client.getView("featured_articles--page_1", { + locale: "es", + defaultLocale: "en", + deserialize: false, + params: { + "fields[node--article]": "title", + }, + }) + + expect(view).toMatchSnapshot() + }) + + test("throws an error for invalid view name", async () => { + const client = new DrupalClient(BASE_URL) + + await expect(client.getView("INVALID")).rejects.toThrow("Not Found") + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.getView("featured_articles--page_1") + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getView("featured_articles--page_1", { withAuth: true }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) + + test("fetches a view with links for pagination", async () => { + const client = new DrupalClient(BASE_URL) + const view = await client.getView("recipes--page_1") + + expect(view.links).toHaveProperty("next") + }) +}) + +describe("translatePath()", () => { + test("translates a path", async () => { + const client = new DrupalClient(BASE_URL) + + const path = await client.translatePath("recipes/deep-mediterranean-quiche") + + expect(path).toMatchSnapshot() + + const path2 = await client.translatePath( + "/recipes/deep-mediterranean-quiche" + ) + + expect(path).toEqual(path2) + }) + + test("returns null for path not found", async () => { + const client = new DrupalClient(BASE_URL) + + const path = await client.translatePath("/path-not-found") + + expect(path).toBeNull() + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.translatePath("recipes/deep-mediterranean-quiche") + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: false, + }) + ) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.translatePath("recipes/deep-mediterranean-quiche", { + withAuth: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) diff --git a/packages/next-drupal/tests/DrupalClient/getters-setters.test.ts b/packages/next-drupal/tests/DrupalClient/getters-setters.test.ts new file mode 100644 index 00000000..ce224196 --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/getters-setters.test.ts @@ -0,0 +1,224 @@ +import { afterEach, describe, expect, jest, test } from "@jest/globals" +import { + AccessToken, + DrupalClient, + DrupalClientAuthAccessToken, + DrupalClientAuthUsernamePassword, + DrupalClientOptions, +} from "../../src" +import { BASE_URL, mocks } from "../utils" + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe("apiPrefix", () => { + test("get apiPrefix", () => { + const client = new DrupalClient(BASE_URL) + expect(client.apiPrefix).toBe("/jsonapi") + }) + test("set apiPrefix", () => { + const client = new DrupalClient(BASE_URL) + client.apiPrefix = "/api" + expect(client.apiPrefix).toBe("/api") + }) + test('set apiPrefix and prefixes with "/"', () => { + const client = new DrupalClient(BASE_URL) + client.apiPrefix = "api" + expect(client.apiPrefix).toBe("/api") + }) +}) + +describe("auth", () => { + describe("throws an error if invalid Basic Auth", () => { + test("missing username", () => { + expect(() => { + const client = new DrupalClient(BASE_URL) + // @ts-ignore + client.auth = { + password: "password", + } + }).toThrow( + "'username' and 'password' are required for auth. See https://next-drupal.org/docs/client/auth" + ) + }) + + test("missing password", () => { + expect(() => { + const client = new DrupalClient(BASE_URL) + // @ts-ignore + client.auth = { + username: "admin", + } + }).toThrow( + "'username' and 'password' are required for auth. See https://next-drupal.org/docs/client/auth" + ) + }) + }) + + describe("throws an error if invalid Access Token", () => { + // TODO: The wrong error is thrown. + test.skip("missing access_token", () => { + expect(() => { + const client = new DrupalClient(BASE_URL) + // @ts-ignore + client.auth = { + token_type: "bearer", + } + }).toThrow( + "'access_token' and 'token_type' are required for auth. See https://next-drupal.org/docs/client/auth" + ) + }) + + test("missing token_type", () => { + expect(() => { + const client = new DrupalClient(BASE_URL) + // @ts-ignore + client.auth = { + access_token: mocks.auth.accessToken.access_token, + } + }).toThrow( + "'access_token' and 'token_type' are required for auth. See https://next-drupal.org/docs/client/auth" + ) + }) + }) + + describe("throws an error if invalid Client ID/Secret", () => { + test("missing clientId", () => { + expect(() => { + const client = new DrupalClient(BASE_URL) + // @ts-ignore + client.auth = { + clientSecret: mocks.auth.clientIdSecret.clientSecret, + } + }).toThrow( + "'clientId' and 'clientSecret' are required for auth. See https://next-drupal.org/docs/client/auth" + ) + }) + + test("missing clientSecret", () => { + expect(() => { + const client = new DrupalClient(BASE_URL) + // @ts-ignore + client.auth = { + clientId: mocks.auth.clientIdSecret.clientId, + } + }).toThrow( + "'clientId' and 'clientSecret' are required for auth. See https://next-drupal.org/docs/client/auth" + ) + }) + }) + + test("sets Basic Auth", () => { + const basicAuth: DrupalClientAuthUsernamePassword = { + ...mocks.auth.basicAuth, + } + const client = new DrupalClient(BASE_URL) + client.auth = basicAuth + expect(client._auth).toMatchObject({ ...basicAuth }) + }) + + test("sets Access Token", () => { + const accessToken = { + ...mocks.auth.accessToken, + } + const client = new DrupalClient(BASE_URL) + client.auth = accessToken + expect(client._auth).toMatchObject({ ...accessToken }) + }) + + test("sets Client ID/Secret", () => { + const clientIdSecret = { + ...mocks.auth.clientIdSecret, + } + const client = new DrupalClient(BASE_URL) + client.auth = clientIdSecret + expect(client._auth).toMatchObject({ ...clientIdSecret }) + }) + + test("sets auth function", () => { + const authFunction = mocks.auth.function + const client = new DrupalClient(BASE_URL) + client.auth = authFunction + expect(client._auth).toBe(authFunction) + }) + + test("sets custom Authorization string", () => { + const authString = `${mocks.auth.customAuthenticationHeader}` + const client = new DrupalClient(BASE_URL) + client.auth = authString + expect(client._auth).toBe(authString) + }) + + test("sets a default access token url", () => { + const accessToken = { + ...mocks.auth.accessToken, + } + const client = new DrupalClient(BASE_URL) + client.auth = accessToken + expect(client._auth.url).toBe("/oauth/token") + }) + + test("can override the default access token url", () => { + const accessToken = { + ...mocks.auth.accessToken, + url: "/custom/oauth/token", + } + const client = new DrupalClient(BASE_URL) + client.auth = accessToken + expect(client._auth.url).toBe("/custom/oauth/token") + }) +}) + +describe("headers", () => { + describe("set headers", () => { + test("using key-value pairs", () => { + const headers = [ + ["Content-Type", "application/x-www-form-urlencoded"], + ["Accept", "application/json"], + ] as DrupalClientOptions["headers"] + const client = new DrupalClient(BASE_URL) + client.headers = headers + expect(client._headers).toBe(headers) + }) + + test("using object literal", () => { + const headers = { + "Content-Type": "application/x-www-form-urlencoded", + Accept: "application/json", + } as DrupalClientOptions["headers"] + const client = new DrupalClient(BASE_URL) + client.headers = headers + expect(client._headers).toBe(headers) + }) + + test("using Headers object", () => { + const headers = new Headers() + headers.append("Content-Type", "application/x-www-form-urlencoded") + headers.append("Accept", "application/json") + + const client = new DrupalClient(BASE_URL) + client.headers = headers + expect(client._headers).toBe(headers) + }) + }) +}) + +describe("token", () => { + test("set token", () => { + function getExpiresOn(token: AccessToken): number { + return Date.now() + token.expires_in * 1000 + } + + const accessToken = { + ...mocks.auth.accessToken, + } as DrupalClientAuthAccessToken + const before = getExpiresOn(accessToken) + + const client = new DrupalClient(BASE_URL) + client.token = accessToken + expect(client._token).toBe(accessToken) + expect(client.tokenExpiresOn).toBeGreaterThanOrEqual(before) + expect(client.tokenExpiresOn).toBeLessThanOrEqual(getExpiresOn(accessToken)) + }) +}) diff --git a/packages/next-drupal/tests/DrupalClient/pages-router-methods.test.ts b/packages/next-drupal/tests/DrupalClient/pages-router-methods.test.ts new file mode 100644 index 00000000..fa4679b5 --- /dev/null +++ b/packages/next-drupal/tests/DrupalClient/pages-router-methods.test.ts @@ -0,0 +1,1252 @@ +import { afterEach, describe, expect, jest, test } from "@jest/globals" +import { GetStaticPropsContext } from "next" +import { DrupalClient } from "../../src" +import { BASE_URL, mocks, spyOnFetch } from "../utils" +import type { DrupalNode, JsonApiResourceWithPath } from "../../src" + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe("buildStaticPathsFromResources()", () => { + const resources: Pick[] = [ + { + path: { + alias: "/blog/post/one", + pid: 1, + langcode: "en", + }, + }, + { + path: { + alias: "/blog/post/two", + pid: 2, + langcode: "en", + }, + }, + ] + + test("builds static paths from resources", () => { + const client = new DrupalClient(BASE_URL) + + expect(client.buildStaticPathsFromResources(resources)).toMatchObject([ + { + params: { + slug: ["blog", "post", "one"], + }, + }, + { + params: { + slug: ["blog", "post", "two"], + }, + }, + ]) + + expect( + client.buildStaticPathsFromResources(resources, { locale: "es" }) + ).toMatchObject([ + { + locale: "es", + params: { + slug: ["blog", "post", "one"], + }, + }, + { + locale: "es", + params: { + slug: ["blog", "post", "two"], + }, + }, + ]) + }) + + test("builds static paths from resources with pathPrefix", () => { + const client = new DrupalClient(BASE_URL) + + const paths = client.buildStaticPathsFromResources(resources, { + pathPrefix: "blog", + }) + + const paths2 = client.buildStaticPathsFromResources(resources, { + pathPrefix: "/blog", + }) + + const paths3 = client.buildStaticPathsFromResources(resources, { + pathPrefix: "/blog/post", + locale: "es", + }) + + const paths4 = client.buildStaticPathsFromResources(resources, { + pathPrefix: "blog/post", + locale: "es", + }) + + expect(paths).toMatchObject([ + { + params: { + slug: ["post", "one"], + }, + }, + { + params: { + slug: ["post", "two"], + }, + }, + ]) + expect(paths3).toMatchObject([ + { + locale: "es", + params: { + slug: ["one"], + }, + }, + { + locale: "es", + params: { + slug: ["two"], + }, + }, + ]) + + expect(paths).toEqual(paths2) + expect(paths3).toEqual(paths4) + }) + + test('converts frontPage path to "/"', () => { + const client = new DrupalClient(BASE_URL) + + const resources: Pick[] = [ + { + path: { + alias: "/home", + pid: 1, + langcode: "en", + }, + }, + ] + + expect(client.buildStaticPathsFromResources(resources)).toMatchObject([ + { + params: { + slug: [""], + }, + }, + ]) + }) +}) + +describe("buildStaticPathsParamsFromPaths()", () => { + test("builds static paths from paths", () => { + const client = new DrupalClient(BASE_URL) + + const paths = ["/blog/post/one", "/blog/post/two", "/blog/post/three"] + + expect(client.buildStaticPathsParamsFromPaths(paths)).toMatchObject([ + { + params: { + slug: ["blog", "post", "one"], + }, + }, + { + params: { + slug: ["blog", "post", "two"], + }, + }, + { + params: { + slug: ["blog", "post", "three"], + }, + }, + ]) + + expect( + client.buildStaticPathsParamsFromPaths(paths, { locale: "en" }) + ).toMatchObject([ + { + locale: "en", + params: { + slug: ["blog", "post", "one"], + }, + }, + { + locale: "en", + params: { + slug: ["blog", "post", "two"], + }, + }, + { + locale: "en", + params: { + slug: ["blog", "post", "three"], + }, + }, + ]) + }) + + test("builds static paths from paths with pathPrefix", () => { + const client = new DrupalClient(BASE_URL) + + const paths = client.buildStaticPathsParamsFromPaths( + ["/blog/post/one", "/blog/post/two", "/blog/post"], + { pathPrefix: "blog" } + ) + + const paths2 = client.buildStaticPathsParamsFromPaths( + ["/blog/post/one", "/blog/post/two", "/blog/post"], + { pathPrefix: "/blog" } + ) + + const paths3 = client.buildStaticPathsParamsFromPaths( + ["blog/post/one", "blog/post/two", "blog/post"], + { pathPrefix: "/blog" } + ) + + const paths4 = client.buildStaticPathsParamsFromPaths( + ["blog/post/one", "blog/post/two", "blog/post"], + { pathPrefix: "blog" } + ) + + expect(paths).toMatchObject([ + { + params: { + slug: ["post", "one"], + }, + }, + { + params: { + slug: ["post", "two"], + }, + }, + { + params: { + slug: ["post"], + }, + }, + ]) + + expect(paths).toEqual(paths2) + expect(paths).toEqual(paths3) + expect(paths).toEqual(paths4) + }) +}) + +describe("getAuthFromContextAndOptions()", () => { + const clientIdSecret = mocks.auth.clientIdSecret + + test("should use the withAuth option if provided and NOT in preview", async () => { + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getResourceFromContext( + "node--article", + { + preview: false, + }, + { + withAuth: true, + } + ) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + + await client.getResourceFromContext( + "node--article", + { + preview: false, + }, + { + withAuth: { + clientId: "foo", + clientSecret: "bar", + scope: "baz", + }, + } + ) + + expect(fetchSpy).toHaveBeenLastCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: { + clientId: "foo", + clientSecret: "bar", + scope: "baz", + }, + }) + ) + }) + + test("should fallback to the global auth if NOT in preview and no withAuth option provided", async () => { + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + }) + const fetchSpy = spyOnFetch() + + await client.getResourceFromContext("node--article", { + preview: false, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: false, + }) + ) + + const client2 = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + withAuth: true, + }) + jest.spyOn(client2, "getAccessToken").mockImplementation(async () => ({ + token_type: "", + expires_in: 0, + access_token: "", + })) + + await client2.getResourceFromContext("node--article", { + preview: false, + }) + + expect(fetchSpy).toHaveBeenLastCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) + + test("should NOT use the global auth if in preview", async () => { + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + withAuth: true, + }) + const fetchSpy = spyOnFetch() + + await client.getResourceFromContext("node--article", { + preview: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: null, + }) + ) + }) + + test("should use the scope from context if in preview and using the simple_oauth plugin", async () => { + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + }) + const fetchSpy = spyOnFetch() + + await client.getResourceFromContext("node--article", { + preview: true, + previewData: { + plugin: "simple_oauth", + scope: "editor", + }, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: { + ...clientIdSecret, + scope: "editor", + url: "/oauth/token", + }, + }) + ) + }) + + test("should use the scope from context even with global withAuth if in preview and using the simple_oauth plugin", async () => { + const client = new DrupalClient(BASE_URL, { + auth: { + ...clientIdSecret, + scope: "administrator", + }, + withAuth: true, + }) + const fetchSpy = spyOnFetch() + + await client.getResourceFromContext("node--article", { + preview: true, + previewData: { + plugin: "simple_oauth", + scope: "editor", + }, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: { + ...clientIdSecret, + scope: "editor", + url: "/oauth/token", + }, + }) + ) + }) + + test("should use the access_token from context if in preview and using the jwt plugin", async () => { + const client = new DrupalClient(BASE_URL, { + auth: clientIdSecret, + }) + const fetchSpy = spyOnFetch() + + await client.getResourceFromContext("node--article", { + preview: true, + previewData: { + plugin: "jwt", + access_token: "example-token", + }, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: `Bearer example-token`, + }) + ) + }) + + test("should use the access token from context even with global withAuth if in preview and using the jwt plugin", async () => { + const client = new DrupalClient(BASE_URL, { + auth: { + ...clientIdSecret, + scope: "administrator", + }, + withAuth: true, + }) + const fetchSpy = spyOnFetch() + + await client.getResourceFromContext("node--article", { + preview: true, + previewData: { + plugin: "jwt", + access_token: "example-token", + }, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: `Bearer example-token`, + }) + ) + }) +}) + +describe("getPathFromContext()", () => { + test("returns a path from context", async () => { + const client = new DrupalClient(BASE_URL) + + expect( + client.getPathFromContext({ + params: { + slug: ["foo"], + }, + }) + ).toEqual("/foo") + + expect( + client.getPathFromContext({ + params: { + slug: ["foo", "bar"], + }, + }) + ).toEqual("/foo/bar") + + expect( + client.getPathFromContext({ + locale: "en", + defaultLocale: "es", + params: { + slug: ["foo", "bar"], + }, + }) + ).toEqual("/en/foo/bar") + + expect( + client.getPathFromContext({ + params: { + slug: [], + }, + }) + ).toEqual("/home") + + client.frontPage = "/front" + + expect( + client.getPathFromContext({ + params: { + slug: [], + }, + }) + ).toEqual("/front") + + expect( + client.getPathFromContext({ + locale: "es", + defaultLocale: "en", + params: { + slug: [], + }, + }) + ).toEqual("/es/front") + }) + + test("returns a path from context with pathPrefix", () => { + const client = new DrupalClient(BASE_URL) + + expect( + client.getPathFromContext( + { + params: { + slug: ["bar", "baz"], + }, + }, + { + pathPrefix: "/foo", + } + ) + ).toEqual("/foo/bar/baz") + + expect( + client.getPathFromContext( + { + params: { + slug: ["bar", "baz"], + }, + }, + { + pathPrefix: "foo", + } + ) + ).toEqual("/foo/bar/baz") + + expect( + client.getPathFromContext( + { + locale: "en", + defaultLocale: "en", + params: { + slug: ["bar", "baz"], + }, + }, + { + pathPrefix: "foo", + } + ) + ).toEqual("/foo/bar/baz") + + expect( + client.getPathFromContext( + { + locale: "es", + defaultLocale: "en", + params: { + slug: ["bar", "baz"], + }, + }, + { + pathPrefix: "foo", + } + ) + ).toEqual("/es/foo/bar/baz") + + expect( + client.getPathFromContext( + { + locale: "es", + defaultLocale: "en", + params: { + slug: [], + }, + }, + { + pathPrefix: "/foo", + } + ) + ).toEqual("/es/foo/home") + + client.frontPage = "/baz" + + expect( + client.getPathFromContext( + { + locale: "en", + defaultLocale: "en", + params: { + slug: [], + }, + }, + { + pathPrefix: "foo", + } + ) + ).toEqual("/foo/baz") + + expect( + client.getPathFromContext( + { + params: { + slug: [], + }, + }, + { + pathPrefix: "/foo/bar", + } + ) + ).toEqual("/foo/bar/baz") + }) + + test("encodes path with punctuation", async () => { + const client = new DrupalClient(BASE_URL) + + const path = client.getPathFromContext({ + params: { + slug: ["path&with^punc&in$path"], + }, + }) + + expect(path).toEqual("/path%26with%5Epunc%26in%24path") + + const translatedPath = await client.translatePath(path) + + expect(translatedPath).toMatchSnapshot() + }) +}) + +describe("getPathsFromContext()", () => { + test("is an alias for getStaticPathsFromContext", () => { + const client = new DrupalClient(BASE_URL) + expect(client.getPathsFromContext).toBe(client.getStaticPathsFromContext) + }) +}) + +describe("getResourceCollectionFromContext()", () => { + test("fetches a resource collection", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + locale: "en", + defaultLocale: "en", + } + + const articles = await client.getResourceCollectionFromContext( + "node--article", + context, + { + params: { + "fields[node--article]": "title", + }, + } + ) + + expect(articles).toMatchSnapshot() + }) + + test("fetches a resource collection using locale", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + locale: "es", + defaultLocale: "en", + } + + const articles = await client.getResourceCollectionFromContext( + "node--article", + context, + { + params: { + "fields[node--article]": "title,langcode", + }, + } + ) + + expect(articles[0].langcode).toEqual("es") + + expect(articles).toMatchSnapshot() + }) + + test("fetches raw data", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + locale: "en", + defaultLocale: "en", + } + + const recipes = await client.getResourceCollectionFromContext( + "node--recipe", + context, + { + deserialize: false, + params: { + "fields[node--recipe]": "title", + "page[limit]": 2, + }, + } + ) + + expect(recipes).toMatchSnapshot() + }) + + test("throws an error for invalid resource type", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + locale: "en", + defaultLocale: "en", + } + + await expect( + client.getResourceCollectionFromContext( + "RESOURCE-DOES-NOT-EXIST", + context + ) + ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") + }) + + test("throws an error for invalid params", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + locale: "en", + defaultLocale: "en", + } + + await expect( + client.getResourceCollectionFromContext( + "node--recipe", + context, + { + params: { + include: "invalid_relationship", + }, + } + ) + ).rejects.toThrow( + "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." + ) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + const context: GetStaticPropsContext = { + locale: "en", + defaultLocale: "en", + } + + await client.getResourceCollectionFromContext("node--recipe", context) + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + const context: GetStaticPropsContext = { + locale: "en", + defaultLocale: "en", + } + await client.getResourceCollectionFromContext("node--recipe", context, { + withAuth: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) + +describe("getResourceFromContext()", () => { + test("fetches a resource from context", async () => { + const client = new DrupalClient(BASE_URL) + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + const recipe = await client.getResourceFromContext( + "node--recipe", + context + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches a resource from context with params", async () => { + const client = new DrupalClient(BASE_URL) + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + const recipe = await client.getResourceFromContext( + "node--recipe", + context, + { + params: { + "fields[node--recipe]": "title", + }, + } + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches a resource from context using locale", async () => { + const client = new DrupalClient(BASE_URL) + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "quiche-mediterráneo-profundo"], + }, + locale: "es", + defaultLocale: "en", + } + const recipe = await client.getResourceFromContext( + "node--recipe", + context, + { + params: { + "fields[node--recipe]": "title,field_cooking_time", + }, + } + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches raw data", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + const recipe = await client.getResourceFromContext( + "node--recipe", + context, + { + deserialize: false, + params: { + "fields[node--recipe]": "title", + }, + } + ) + + expect(recipe).toMatchSnapshot() + }) + + test("fetches a resource from context by revision", async () => { + const client = new DrupalClient(BASE_URL) + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "quiche-mediterráneo-profundo"], + }, + locale: "es", + defaultLocale: "en", + } + const recipe = await client.getResourceFromContext( + "node--recipe", + context, + { + params: { + "fields[node--recipe]": "drupal_internal__vid", + }, + } + ) + + context.previewData = { resourceVersion: "rel:latest-version" } + + const latestRevision = await client.getResourceFromContext( + "node--recipe", + context, + { + params: { + "fields[node--recipe]": "drupal_internal__vid", + }, + } + ) + + expect(recipe.drupal_internal__vid).toEqual( + latestRevision.drupal_internal__vid + ) + }) + + test("throws an error for invalid revision", async () => { + const client = new DrupalClient(BASE_URL) + const context: GetStaticPropsContext = { + previewData: { + resourceVersion: "id:-11", + }, + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + await expect( + client.getResourceFromContext("node--recipe", context, { + params: { + "fields[node--recipe]": "drupal_internal__vid", + }, + }) + ).rejects.toThrow( + "404 Not Found\nThe requested version, identified by `id:-11`, could not be found." + ) + }) + + test("throws an error if revision access is forbidden", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + previewData: { + resourceVersion: "id:1", + }, + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + await expect( + client.getResourceFromContext("node--recipe", context, { + params: { + "fields[node--recipe]": "title", + }, + }) + ).rejects.toThrow( + "403 Forbidden\nThe current user is not allowed to GET the selected resource. The user does not have access to the requested version." + ) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + await client.getResourceFromContext("node--recipe", context) + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: false, + }) + ) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + await client.getResourceFromContext("node--recipe", context, { + withAuth: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) + + test("makes authenticated requests when preview is true", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + const context: GetStaticPropsContext = { + preview: true, + previewData: { + plugin: "simple_oauth", + scope: "editor", + }, + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + await client.getResourceFromContext("node--recipe", context) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: `Bearer sample-token`, + }) + ) + }) + + test("accepts a translated path", async () => { + const client = new DrupalClient(BASE_URL) + + const path = await client.translatePath("recipes/deep-mediterranean-quiche") + + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + const recipe = await client.getResourceFromContext(path, context, { + params: { + "fields[node--recipe]": "title,path,status", + }, + }) + + await expect(recipe).toMatchSnapshot() + }) +}) + +describe("getSearchIndexFromContext()", () => { + test("calls getSearchIndex() with context data", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest + .spyOn(client, "getSearchIndex") + .mockImplementation(async () => jest.fn()) + const name = "resource-name" + const locale = "en-uk" + const defaultLocale = "en-us" + const options = { + deserialize: true, + } + + await client.getSearchIndexFromContext( + name, + { locale, defaultLocale }, + options + ) + + expect(fetchSpy).toHaveBeenCalledWith(name, { + ...options, + locale, + defaultLocale, + }) + }) +}) + +describe("getStaticPathsFromContext()", () => { + test("returns static paths from context", async () => { + const client = new DrupalClient(BASE_URL) + + const paths = await client.getStaticPathsFromContext("node--article", {}) + + expect(paths).toMatchSnapshot() + }) + + test("returns static paths from context with locale", async () => { + const client = new DrupalClient(BASE_URL) + + const paths = await client.getStaticPathsFromContext("node--article", { + locales: ["en", "es"], + defaultLocale: "en", + }) + + expect(paths).toMatchSnapshot() + }) + + test("returns static paths for multiple resource types from context", async () => { + const client = new DrupalClient(BASE_URL) + + const paths = await client.getStaticPathsFromContext( + ["node--article", "node--recipe"], + { + locales: ["en", "es"], + defaultLocale: "en", + } + ) + + expect(paths).toMatchSnapshot() + }) + + test("returns static paths from context with params", async () => { + const client = new DrupalClient(BASE_URL) + + const paths = await client.getStaticPathsFromContext( + "node--article", + {}, + { + params: { + "filter[promote]": 1, + }, + } + ) + + expect(paths).toMatchSnapshot() + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + await client.getStaticPathsFromContext("node--article", { + locales: ["en", "es"], + defaultLocale: "en", + }) + expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { + withAuth: false, + }) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + await client.getStaticPathsFromContext( + "node--article", + { + locales: ["en", "es"], + defaultLocale: "en", + }, + { + withAuth: true, + } + ) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) + +describe("translatePathFromContext()", () => { + test("translates a path", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + + const path = await client.translatePathFromContext(context) + + expect(path).toMatchSnapshot() + }) + + test("returns null for path not found", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + params: { + slug: ["path-not-found"], + }, + } + + const path = await client.translatePathFromContext(context) + + expect(path).toBeNull() + }) + + test("translates a path with pathPrefix", async () => { + const client = new DrupalClient(BASE_URL) + + const context: GetStaticPropsContext = { + params: { + slug: ["deep-mediterranean-quiche"], + }, + } + + const path = await client.translatePathFromContext(context, { + pathPrefix: "recipes", + }) + + expect(path).toMatchSnapshot() + + const path2 = await client.translatePathFromContext(context, { + pathPrefix: "/recipes", + }) + + expect(path).toEqual(path2) + }) + + test("makes un-authenticated requests by default", async () => { + const client = new DrupalClient(BASE_URL) + const fetchSpy = jest.spyOn(client, "fetch") + + const context: GetStaticPropsContext = { + params: { + slug: ["recipes", "deep-mediterranean-quiche"], + }, + } + await client.translatePathFromContext(context) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: false, + }) + ) + }) + + test("makes authenticated requests with withAuth option", async () => { + const client = new DrupalClient(BASE_URL, { + useDefaultResourceTypeEntry: true, + auth: `Bearer sample-token`, + }) + const fetchSpy = spyOnFetch() + jest.spyOn(client, "getAccessToken") + + const context: GetStaticPropsContext = { + params: { + slug: ["deep-mediterranean-quiche"], + }, + } + await client.translatePathFromContext(context, { + pathPrefix: "recipes", + withAuth: true, + }) + + expect(fetchSpy).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + withAuth: true, + }) + ) + }) +}) diff --git a/packages/next-drupal/tests/Logger/logger.test.ts b/packages/next-drupal/tests/Logger/logger.test.ts new file mode 100644 index 00000000..4ecf4150 --- /dev/null +++ b/packages/next-drupal/tests/Logger/logger.test.ts @@ -0,0 +1,69 @@ +import { describe, expect, jest, test } from "@jest/globals" +import { + LOG_MESSAGE_PREFIX, + DEBUG_MESSAGE_PREFIX, + WARN_MESSAGE_PREFIX, + ERROR_MESSAGE_PREFIX, + logger, +} from "../../src/logger" +import type { Logger } from "../../src" + +test("is type Logger", () => { + // At compile time, compilation will fail if not a Logger type. + const test: Logger = logger + + // At run-time, we just check for object. + expect(typeof test === "object").toBe(true) +}) + +describe("method: debug", () => { + test("logs a message", () => { + const consoleSpy = jest + .spyOn(console, "debug") + .mockImplementation((message) => message) + const message = "Test debug message" + + logger.debug(message) + + expect(consoleSpy).toHaveBeenCalledWith(DEBUG_MESSAGE_PREFIX, message) + }) +}) + +describe("method: error", () => { + test("logs a message", () => { + const consoleSpy = jest + .spyOn(console, "error") + .mockImplementation((message) => message) + const message = "Test error message" + + logger.error(message) + + expect(consoleSpy).toHaveBeenCalledWith(ERROR_MESSAGE_PREFIX, message) + }) +}) + +describe("method: log", () => { + test("logs a message", () => { + const consoleSpy = jest + .spyOn(console, "log") + .mockImplementation((message) => message) + const message = "Test log message" + + logger.log(message) + + expect(consoleSpy).toHaveBeenCalledWith(LOG_MESSAGE_PREFIX, message) + }) +}) + +describe("method: warn", () => { + test("logs a message", () => { + const consoleSpy = jest + .spyOn(console, "warn") + .mockImplementation((message) => message) + const message = "Test warn message" + + logger.warn(message) + + expect(consoleSpy).toHaveBeenCalledWith(WARN_MESSAGE_PREFIX, message) + }) +}) diff --git a/packages/next-drupal/tests/__mocks__/next.ts b/packages/next-drupal/tests/__mocks__/next.ts new file mode 100644 index 00000000..664b58ba --- /dev/null +++ b/packages/next-drupal/tests/__mocks__/next.ts @@ -0,0 +1,37 @@ +export const NextApiRequest = jest.fn(function () { + this.query = { + slug: "/example", + resourceVersion: "id:1", + plugin: "simple_oauth", + secret: "very-secret-key", + } + this.url = `https://example.com/?${new URLSearchParams(this.query)}` + this.headers = { + host: "https://example.com", + } +}) + +export const NextApiResponse = jest.fn(function () { + const headers = { + "Set-Cookie": ["mock-cookie-value"], + } + const response = { + statusCode: 200, + status: jest.fn((statusCode) => { + response.statusCode = statusCode + return response + }), + clearPreviewData: jest.fn(() => response), + setPreviewData: jest.fn(() => response), + setDraftMode: jest.fn(() => response), + getHeader: jest.fn((name) => headers[name]), + setHeader: jest.fn((name, value) => { + headers[name] = value + return response + }), + writeHead: jest.fn(() => response), + end: jest.fn(), + json: jest.fn(), + } + return response +}) diff --git a/packages/next-drupal/tests/__mocks__/next/headers.ts b/packages/next-drupal/tests/__mocks__/next/headers.ts new file mode 100644 index 00000000..ca2da914 --- /dev/null +++ b/packages/next-drupal/tests/__mocks__/next/headers.ts @@ -0,0 +1,86 @@ +import type { CookieListItem } from "next/dist/compiled/@edge-runtime/cookies" + +// Create nested mocks ahead of time instead of always creating new mocks when +// the cookies mock function is called. +export const cookies = jest.fn(() => cookiesObject) + +const cookieStore = {} +const cookiesObject = { + delete: jest.fn((name: string) => { + delete cookieStore[name] + return cookiesObject + }), + get: jest.fn((name: string) => + cookieStore[name] + ? ({ + ...cookieStore[name], + } as CookieListItem) + : undefined + ), + getAll: jest.fn( + () => + [ + ...Object.keys(cookieStore).map((name) => ({ + ...cookieStore[name], + })), + ] as CookieListItem[] + ), + has: jest.fn((name: string) => !!cookieStore[name]), + set: jest.fn( + ({ + name, + value, + expires, + sameSite, + secure, + path, + domain, + }: CookieListItem) => { + cookieStore[name] = { + name, + value, + expires, + sameSite, + secure, + path, + domain, + } + return cookiesObject + } + ), + toString: jest.fn(), +} + +// Create nested mocks ahead of time instead of always creating new mocks when +// the draftMode mock function is called. +export const draftMode = jest.fn(() => ({ + disable, + enable, + isEnabled: draftModeEnabled, +})) + +let draftModeEnabled = false +const disable = jest.fn(() => { + draftModeEnabled = false +}) +const enable = jest.fn(() => { + draftModeEnabled = true +}) + +export function resetNextHeaders() { + cookies.mockClear() + cookiesObject.delete.mockClear() + cookiesObject.get.mockClear() + cookiesObject.getAll.mockClear() + cookiesObject.has.mockClear() + cookiesObject.set.mockClear() + cookiesObject.toString.mockClear() + Object.keys(cookieStore).forEach((key) => { + delete cookieStore[key] + }) + + draftMode.mockClear() + disable.mockClear() + enable.mockClear() + draftModeEnabled = false +} diff --git a/packages/next-drupal/tests/client.test.ts b/packages/next-drupal/tests/client.test.ts deleted file mode 100644 index 011bfd35..00000000 --- a/packages/next-drupal/tests/client.test.ts +++ /dev/null @@ -1,2643 +0,0 @@ -import { expect } from "@jest/globals" -import { GetStaticPropsContext } from "next" -import { DrupalClient } from "../src/client" -import type { - Serializer, - DrupalNode, - Logger, - JsonApiResourceWithPath, - JsonApiSearchApiResponse, -} from "../src/types" -import { BASE_URL } from "./utils" - -afterEach(() => { - jest.restoreAllMocks() -}) - -describe("DrupalClient", () => { - test("it properly constructs a DrupalClient", () => { - expect(new DrupalClient(BASE_URL)).toBeInstanceOf(DrupalClient) - }) - - test("it throws error for invalid baseUrl", () => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - expect(() => new DrupalClient()).toThrow("The 'baseUrl' param is required.") - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - expect(() => new DrupalClient({})).toThrow( - "The 'baseUrl' param is required." - ) - }) - - test("it correctly formats apiPrefix", () => { - const client = new DrupalClient(BASE_URL) - expect(client.apiPrefix).toBe("/jsonapi") - - const client2 = new DrupalClient(BASE_URL, { - apiPrefix: "/api", - }) - expect(client2.apiPrefix).toBe("/api") - - const client3 = new DrupalClient(BASE_URL, {}) - client3.apiPrefix = "api" - expect(client3.apiPrefix).toBe("/api") - - const client4 = new DrupalClient(BASE_URL, {}) - expect(client4.apiPrefix).toBe("/jsonapi") - }) - - test("it has a debug mode", async () => { - const consoleSpy = jest.spyOn(console, "debug").mockImplementation() - - const client = new DrupalClient(BASE_URL, { - debug: true, - }) - - expect(consoleSpy).toHaveBeenCalledWith( - "[next-drupal][debug]:", - "Debug mode is on." - ) - expect(client.debug).toBe(true) - }) -}) - -describe("auth", () => { - test("it accepts username and password for auth", async () => { - const customFetch = jest.fn() - - const client = new DrupalClient(BASE_URL, { - auth: { - username: "admin", - password: "password", - }, - fetcher: customFetch, - }) - const url = client.buildUrl("/jsonapi").toString() - - await client.fetch(url, { withAuth: true }) - expect(customFetch).toHaveBeenCalledWith( - url, - expect.objectContaining({ - headers: { - "Content-Type": "application/vnd.api+json", - Accept: "application/vnd.api+json", - Authorization: "Basic YWRtaW46cGFzc3dvcmQ=", - }, - withAuth: true, - }) - ) - }) - - test("it accepts callback for auth", async () => { - const customAuth = jest - .fn() - .mockReturnValue("Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=") - const customFetch = jest.fn() - - const client = new DrupalClient(BASE_URL, { - auth: customAuth, - fetcher: customFetch, - }) - const url = client.buildUrl("/jsonapi").toString() - - await client.fetch(url, { withAuth: true }) - expect(customFetch).toHaveBeenCalledWith( - url, - expect.objectContaining({ - headers: { - "Content-Type": "application/vnd.api+json", - Accept: "application/vnd.api+json", - Authorization: "Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=", - }, - withAuth: true, - }) - ) - }) - - test("it accepts clientId and clientSecret for auth", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - const basic = Buffer.from( - `7795065e-8ad0-45eb-a64d-73d9f3a5e943:d92Fm^ds` - ).toString("base64") - - await client.fetch("http://example.com", { withAuth: true }) - expect(fetchSpy).toHaveBeenNthCalledWith( - 1, - `${BASE_URL}/oauth/token`, - expect.objectContaining({ - headers: { - Accept: "application/json", - Authorization: `Basic ${basic}`, - "Content-Type": "application/x-www-form-urlencoded", - }, - }) - ) - }) - - test("it accepts custom auth url", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - url: "/custom/oauth", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.fetch("http://example.com", { withAuth: true }) - expect(fetchSpy).toHaveBeenNthCalledWith( - 1, - `${BASE_URL}/custom/oauth`, - expect.anything() - ) - }) - - test("it throws an error if invalid auth is set", async () => { - expect( - () => - new DrupalClient(BASE_URL, { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - }, - }) - ).toThrow( - "'clientId' and 'clientSecret' are required for auth. See https://next-drupal.org/docs/client/auth" - ) - - expect(() => { - const client = new DrupalClient(BASE_URL) - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - client.auth = { - clientSecret: "d92Fm^ds", - } - }).toThrow( - "'clientId' and 'clientSecret' are required for auth. See https://next-drupal.org/docs/client/auth" - ) - - expect( - () => - new DrupalClient(BASE_URL, { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - auth: { - username: "admin", - }, - }) - ).toThrow( - "'username' and 'password' are required for auth. See https://next-drupal.org/docs/client/auth" - ) - - expect( - () => - new DrupalClient(BASE_URL, { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - auth: { - password: "password", - }, - }) - ).toThrow( - "'username' and 'password' are required for auth. See https://next-drupal.org/docs/client/auth" - ) - }) -}) - -describe("getAccessToken", () => { - test("it fetches an access token", async () => { - jest.spyOn(global, "fetch").mockImplementation( - jest.fn(() => - Promise.resolve({ - ok: true, - json: () => - Promise.resolve({ - access_token: "ECYM594IlARGc3S8KgBHvTpki0rDtWx6", - token_type: "bearer", - expires_in: 3600, - }), - }) - ) as jest.Mock - ) - - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - - const token = await client.getAccessToken() - expect(token).toEqual({ - access_token: "ECYM594IlARGc3S8KgBHvTpki0rDtWx6", - token_type: "bearer", - expires_in: 3600, - }) - }) - - test("it re-uses access token", async () => { - jest.spyOn(global, "fetch").mockImplementation( - jest.fn(() => - Promise.resolve({ - ok: true, - json: () => - Promise.resolve({ - access_token: "ECYM594IlARGc3S8KgBHvTpki0rDtWx6" + Math.random(), - token_type: "bearer", - expires_in: 3600, - }), - }) - ) as jest.Mock - ) - - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - - const token1 = await client.getAccessToken() - const token2 = await client.getAccessToken() - expect(token1).toEqual(token2) - }) - - test("it accepts a long-lived accessToken", async () => { - const accessToken = { - token_type: "Bearer", - expires_in: 300, - access_token: - "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImVlNDkyOTI4ZTZjNj", - } - - const client = new DrupalClient(BASE_URL, { - accessToken, - }) - - const token = await client.getAccessToken() - - expect(token).toEqual(accessToken) - }) -}) - -describe("headers", () => { - test("it allows setting custom headers", async () => { - const customFetch = jest.fn() - const client = new DrupalClient(BASE_URL, { - fetcher: customFetch, - }) - client.headers = { - foo: "bar", - } - - const url = "http://example.com" - - await client.fetch(url) - expect(customFetch).toHaveBeenCalledWith( - url, - expect.objectContaining({ - headers: { foo: "bar" }, - }) - ) - }) - - test("it allows setting custom headers with custom auth", async () => { - const customFetch = jest.fn() - const client = new DrupalClient(BASE_URL, { - fetcher: customFetch, - headers: { - foo: "bar", - }, - auth: jest - .fn() - .mockReturnValue("Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM="), - }) - - const url = "http://example.com" - - await client.fetch(url, { withAuth: true }) - - expect(customFetch).toHaveBeenCalledWith( - url, - expect.objectContaining({ - headers: { - foo: "bar", - Authorization: "Basic YXJzaGFkQG5leHQtZHJ1cGFsLm9yZzphYmMxMjM=", - }, - withAuth: true, - }) - ) - }) -}) - -describe("logger", () => { - test("it allows custom logger", () => { - const logger: Logger = { - log(message) { - console.log(message) - }, - warn(message) { - console.warn(message) - }, - error(message) { - console.error(message) - }, - debug(message) { - console.debug(message) - }, - } - const debugSpy = jest.spyOn(logger, "debug").mockImplementation() - - new DrupalClient(BASE_URL, { debug: true, logger }) - - expect(debugSpy).toHaveBeenCalled() - }) -}) - -describe("fetch", () => { - test("it allows fetching custom url", async () => { - const client = new DrupalClient(BASE_URL) - const url = client.buildUrl( - "/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053" - ) - - const response = await client.fetch(url.toString()) - expect(response.headers.get("content-type")).toEqual( - "application/vnd.api+json" - ) - const json = await response.json() - expect(json).toMatchSnapshot() - }) - - test("it allows authenticated requests", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const url = client.buildUrl("/jsonapi") - - const getAccessTokenSpy = jest - .spyOn(client, "getAccessToken") - .mockImplementation() - - await client.fetch(url.toString(), { - withAuth: true, - }) - - expect(getAccessTokenSpy).toHaveBeenCalled() - }) - - test("it throws an error if withAuth is called when auth is not configured", async () => { - const client = new DrupalClient(BASE_URL) - - const url = client.buildUrl("/jsonapi") - - await expect( - client.fetch(url.toString(), { - withAuth: true, - }) - ).rejects.toThrow("auth is not configured.") - }) - - test("it allows for custom fetcher", async () => { - const customFetch = jest.fn() - - const client = new DrupalClient(BASE_URL, { - fetcher: customFetch, - }) - const url = client.buildUrl("/jsonapi").toString() - - await client.fetch(url) - expect(customFetch).toHaveBeenCalledWith( - url, - expect.objectContaining({ - headers: { - "Content-Type": "application/vnd.api+json", - Accept: "application/vnd.api+json", - }, - }) - ) - - await client.fetch(url, { - headers: { - foo: "bar", - }, - }) - expect(customFetch).toHaveBeenLastCalledWith( - url, - expect.objectContaining({ - headers: { - Accept: "application/vnd.api+json", - "Content-Type": "application/vnd.api+json", - foo: "bar", - }, - }) - ) - }) -}) - -describe("buildUrl", () => { - const client = new DrupalClient(BASE_URL) - - test("it builds a url", () => { - expect(client.buildUrl("http://example.com").toString()).toEqual( - "http://example.com/" - ) - }) - - test("it builds a relative url", () => { - expect(client.buildUrl("/foo").toString()).toEqual(`${BASE_URL}/foo`) - }) - - test("it builds a url with params", () => { - expect(client.buildUrl("/foo", { bar: "baz" }).toString()).toEqual( - `${BASE_URL}/foo?bar=baz` - ) - - expect( - client - .buildUrl("/jsonapi/node/article", { - sort: "-created", - "fields[node--article]": "title,path", - }) - .toString() - ).toEqual( - `${BASE_URL}/jsonapi/node/article?sort=-created&fields%5Bnode--article%5D=title%2Cpath` - ) - }) - - test("it builds a url from object (DrupalJsonApiParams)", () => { - const params = { - getQueryObject: () => ({ - sort: "-created", - "fields[node--article]": "title,path", - }), - } - - expect(client.buildUrl("/jsonapi/node/article", params).toString()).toEqual( - `${BASE_URL}/jsonapi/node/article?sort=-created&fields%5Bnode--article%5D=title%2Cpath` - ) - }) -}) - -describe("deserialize", () => { - test("it deserializes JSON:API resource", async () => { - const client = new DrupalClient(BASE_URL) - const url = client.buildUrl( - "/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053", - { - include: "field_tags", - } - ) - - const response = await client.fetch(url.toString()) - const json = await response.json() - const article = client.deserialize(json) as DrupalNode - - expect(article).toMatchSnapshot() - expect(article.id).toEqual("52837ad0-f218-46bd-a106-5710336b7053") - expect(article.field_tags).toHaveLength(3) - }) - - test("it deserializes JSON:API collection", async () => { - const client = new DrupalClient(BASE_URL) - const url = client.buildUrl("/jsonapi/node/article", { - getQueryObject: () => ({ - "fields[node--article]": "title", - }), - }) - - const response = await client.fetch(url.toString()) - const json = await response.json() - const articles = client.deserialize(json) as DrupalNode[] - - expect(articles).toMatchSnapshot() - }) - - test("it allows for custom data serializer", async () => { - const serializer: Serializer = { - deserialize: ( - body: { data: { id: string; attributes: { title: string } } }, - options: { pathPrefix: string } - ) => { - return { - id: body.data.id, - title: `${options.pathPrefix}: ${body.data.attributes.title}`, - } - }, - } - const client = new DrupalClient(BASE_URL, { - serializer, - }) - const url = client.buildUrl( - "/jsonapi/node/article/52837ad0-f218-46bd-a106-5710336b7053" - ) - - const response = await client.fetch(url.toString()) - const json = await response.json() - const article = client.deserialize(json, { - pathPrefix: "TITLE", - }) as DrupalNode - - expect(article).toMatchSnapshot() - expect(article.id).toEqual("52837ad0-f218-46bd-a106-5710336b7053") - expect(article.title).toEqual(`TITLE: ${json.data.attributes.title}`) - }) -}) - -describe("getPathFromContext", () => { - test("it returns a path from context", async () => { - const client = new DrupalClient(BASE_URL) - - expect( - client.getPathFromContext({ - params: { - slug: ["foo"], - }, - }) - ).toEqual("/foo") - - expect( - client.getPathFromContext({ - params: { - slug: ["foo", "bar"], - }, - }) - ).toEqual("/foo/bar") - - expect( - client.getPathFromContext({ - locale: "en", - defaultLocale: "es", - params: { - slug: ["foo", "bar"], - }, - }) - ).toEqual("/en/foo/bar") - - expect( - client.getPathFromContext({ - params: { - slug: [], - }, - }) - ).toEqual("/home") - - client.frontPage = "/front" - - expect( - client.getPathFromContext({ - params: { - slug: [], - }, - }) - ).toEqual("/front") - - expect( - client.getPathFromContext({ - locale: "es", - defaultLocale: "en", - params: { - slug: [], - }, - }) - ).toEqual("/es/front") - }) - - test("it returns a path from context with pathPrefix", () => { - const client = new DrupalClient(BASE_URL) - - expect( - client.getPathFromContext( - { - params: { - slug: ["bar", "baz"], - }, - }, - { - pathPrefix: "/foo", - } - ) - ).toEqual("/foo/bar/baz") - - expect( - client.getPathFromContext( - { - params: { - slug: ["bar", "baz"], - }, - }, - { - pathPrefix: "foo", - } - ) - ).toEqual("/foo/bar/baz") - - expect( - client.getPathFromContext( - { - locale: "en", - defaultLocale: "en", - params: { - slug: ["bar", "baz"], - }, - }, - { - pathPrefix: "foo", - } - ) - ).toEqual("/foo/bar/baz") - - expect( - client.getPathFromContext( - { - locale: "es", - defaultLocale: "en", - params: { - slug: ["bar", "baz"], - }, - }, - { - pathPrefix: "foo", - } - ) - ).toEqual("/es/foo/bar/baz") - - expect( - client.getPathFromContext( - { - locale: "es", - defaultLocale: "en", - params: { - slug: [], - }, - }, - { - pathPrefix: "/foo", - } - ) - ).toEqual("/es/foo/home") - - client.frontPage = "/baz" - - expect( - client.getPathFromContext( - { - locale: "en", - defaultLocale: "en", - params: { - slug: [], - }, - }, - { - pathPrefix: "foo", - } - ) - ).toEqual("/foo/baz") - - expect( - client.getPathFromContext( - { - params: { - slug: [], - }, - }, - { - pathPrefix: "/foo/bar", - } - ) - ).toEqual("/foo/bar/baz") - }) - - test("it encodes path with punctuation", async () => { - const client = new DrupalClient(BASE_URL) - - const path = client.getPathFromContext({ - params: { - slug: ["path&with^punc&in$path"], - }, - }) - - expect(path).toEqual("/path%26with%5Epunc%26in%24path") - - const translatedPath = await client.translatePath(path) - - expect(translatedPath).toMatchSnapshot() - }) -}) - -describe("getIndex", () => { - test("it fetches the JSON:API index", async () => { - const client = new DrupalClient(BASE_URL) - const index = await client.getIndex() - - expect(index).toMatchSnapshot() - }) - - test("it fetches the JSON:API index with locale", async () => { - const client = new DrupalClient(BASE_URL) - const index = await client.getIndex("es") - - expect(index).toMatchSnapshot() - }) - - test("it throws error for invalid base url", async () => { - const client = new DrupalClient("https://example.com") - - await expect(client.getIndex()).rejects.toThrow( - "Failed to fetch JSON:API index at https://example.com/jsonapi" - ) - }) -}) - -describe("getEntryForResourceType", () => { - test("it returns the JSON:API entry for a resource type", async () => { - const client = new DrupalClient(BASE_URL) - const getIndexSpy = jest.spyOn(client, "getIndex") - - const recipeEntry = await client.getEntryForResourceType("node--recipe") - expect(recipeEntry).toMatch(`${BASE_URL}/en/jsonapi/node/recipe`) - expect(getIndexSpy).toHaveBeenCalledTimes(1) - - const articleEntry = await client.getEntryForResourceType("node--article") - expect(articleEntry).toMatch(`${BASE_URL}/en/jsonapi/node/article`) - expect(getIndexSpy).toHaveBeenCalledTimes(2) - }) - - test("it assembles JSON:API entry without fetching index", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - }) - const getIndexSpy = jest.spyOn(client, "getIndex") - - const recipeEntry = await client.getEntryForResourceType("node--article") - expect(recipeEntry).toMatch(`${BASE_URL}/jsonapi/node/article`) - expect(getIndexSpy).toHaveBeenCalledTimes(0) - }) - - test("it throws an error if resource type does not exist", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getEntryForResourceType("RESOURCE-DOES-NOT-EXIST") - ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") - }) -}) - -describe("getResource", () => { - test("it fetches a resource by uuid", async () => { - const client = new DrupalClient(BASE_URL) - const recipe = await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f" - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches a resource by uuid with params", async () => { - const client = new DrupalClient(BASE_URL) - const recipe = await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - params: { - "fields[node--recipe]": "title,field_cooking_time", - }, - } - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches a resource using locale", async () => { - const client = new DrupalClient(BASE_URL) - const recipe = await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - locale: "es", - defaultLocale: "en", - params: { - "fields[node--recipe]": "title,field_cooking_time", - }, - } - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches raw data", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - deserialize: false, - } - ) - ).resolves.toMatchSnapshot() - }) - - test("it fetches a resource by revision", async () => { - const client = new DrupalClient(BASE_URL) - const recipe = await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - params: { - "fields[node--recipe]": "drupal_internal__vid", - }, - } - ) - const latestRevision = await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - params: { - resourceVersion: "rel:latest-version", - "fields[node--recipe]": "drupal_internal__vid", - }, - } - ) - - expect(recipe.drupal_internal__vid).toEqual( - latestRevision.drupal_internal__vid - ) - }) - - test("it throws an error for invalid revision", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - params: { - resourceVersion: "id:-11", - "fields[node--recipe]": "title", - }, - } - ) - ).rejects.toThrow( - "404 Not Found\nThe requested version, identified by `id:-11`, could not be found." - ) - }) - - test("it throws an error if revision access if forbidden", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - params: { - resourceVersion: "id:1", - "fields[node--recipe]": "title", - }, - } - ) - ).rejects.toThrow( - "403 Forbidden\nThe current user is not allowed to GET the selected resource. The user does not have access to the requested version." - ) - }) - - test("it throws an error for invalid resource type", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResource( - "RESOURCE-DOES-NOT-EXIST", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f" - ) - ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") - }) - - test("it throws an error for invalid params", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - params: { - include: "invalid_relationship", - }, - } - ) - ).rejects.toThrow( - "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." - ) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f" - ) - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getResource( - "node--recipe", - "71e04ead-4cc7-416c-b9ca-60b635fdc50f", - { - withAuth: true, - } - ) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("getResourceByPath", () => { - test("it fetches a resource by path", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath("/recipes/deep-mediterranean-quiche") - ).resolves.toMatchSnapshot() - }) - - test("it fetches a resource by path with params", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath("/recipes/deep-mediterranean-quiche", { - params: { - "fields[node--recipe]": "title,field_cooking_time", - }, - }) - ).resolves.toMatchSnapshot() - }) - - test("it fetches a resource by path using locale", async () => { - const client = new DrupalClient(BASE_URL) - const recipe = await client.getResourceByPath( - "/recipes/quiche-mediterráneo-profundo", - { - locale: "es", - defaultLocale: "en", - params: { - "fields[node--recipe]": "title,field_cooking_time", - }, - } - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches raw data", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath("/recipes/deep-mediterranean-quiche", { - deserialize: false, - }) - ).resolves.toMatchSnapshot() - }) - - test("it fetches a resource by revision", async () => { - const client = new DrupalClient(BASE_URL) - const recipe = await client.getResourceByPath( - "/recipes/deep-mediterranean-quiche", - { - params: { - "fields[node--recipe]": "drupal_internal__vid", - }, - } - ) - const latestRevision = await client.getResourceByPath( - "/recipes/deep-mediterranean-quiche", - { - params: { - resourceVersion: "rel:latest-version", - "fields[node--recipe]": "drupal_internal__vid", - }, - } - ) - - expect(recipe.drupal_internal__vid).toEqual( - latestRevision.drupal_internal__vid - ) - }) - - test("it throws an error for invalid revision", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath( - "/recipes/deep-mediterranean-quiche", - { - params: { - resourceVersion: "id:-11", - "fields[node--recipe]": "title", - }, - } - ) - ).rejects.toThrow( - "404 Not Found\nThe requested version, identified by `id:-11`, could not be found." - ) - }) - - test("it throws an error if revision access if forbidden", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath( - "/recipes/deep-mediterranean-quiche", - { - params: { - resourceVersion: "id:1", - "fields[node--recipe]": "title", - }, - } - ) - ).rejects.toThrow( - "403 Forbidden\nThe current user is not allowed to GET the selected resource. The user does not have access to the requested version." - ) - }) - - test("it returns null for path not found", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath("/path-do-not-exist") - ).rejects.toThrow("Unable to resolve path /path-do-not-exist.") - }) - - test("it throws an error for invalid params", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceByPath( - "/recipes/deep-mediterranean-quiche", - { - params: { - include: "invalid_relationship", - }, - } - ) - ).rejects.toThrow( - "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." - ) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - const getAccessTokenSpy = jest.spyOn(client, "getAccessToken") - - await client.getResourceByPath( - "/recipes/deep-mediterranean-quiche" - ) - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.not.objectContaining({ - withAuth: true, - }) - ) - expect(getAccessTokenSpy).not.toHaveBeenCalled() - }) - - test("it makes authenticated requests with withAuth", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - const getAccessTokenSpy = jest.spyOn(client, "getAccessToken") - - await client.getResourceByPath( - "/recipes/deep-mediterranean-quiche", - { - withAuth: true, - } - ) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - expect(getAccessTokenSpy).toHaveBeenCalled() - }) -}) - -describe("getResourceFromContext", () => { - test("it fetches a resource from context", async () => { - const client = new DrupalClient(BASE_URL) - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - const recipe = await client.getResourceFromContext( - "node--recipe", - context - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches a resource from context with params", async () => { - const client = new DrupalClient(BASE_URL) - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - const recipe = await client.getResourceFromContext( - "node--recipe", - context, - { - params: { - "fields[node--recipe]": "title", - }, - } - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches a resource from context using locale", async () => { - const client = new DrupalClient(BASE_URL) - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "quiche-mediterráneo-profundo"], - }, - locale: "es", - defaultLocale: "en", - } - const recipe = await client.getResourceFromContext( - "node--recipe", - context, - { - params: { - "fields[node--recipe]": "title,field_cooking_time", - }, - } - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches raw data", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - const recipe = await client.getResourceFromContext( - "node--recipe", - context, - { - deserialize: false, - params: { - "fields[node--recipe]": "title", - }, - } - ) - - expect(recipe).toMatchSnapshot() - }) - - test("it fetches a resource from context by revision", async () => { - const client = new DrupalClient(BASE_URL) - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "quiche-mediterráneo-profundo"], - }, - locale: "es", - defaultLocale: "en", - } - const recipe = await client.getResourceFromContext( - "node--recipe", - context, - { - params: { - "fields[node--recipe]": "drupal_internal__vid", - }, - } - ) - - context.previewData = { resourceVersion: "rel:latest-version" } - - const latestRevision = await client.getResourceFromContext( - "node--recipe", - context, - { - params: { - "fields[node--recipe]": "drupal_internal__vid", - }, - } - ) - - expect(recipe.drupal_internal__vid).toEqual( - latestRevision.drupal_internal__vid - ) - }) - - test("it throws an error for invalid revision", async () => { - const client = new DrupalClient(BASE_URL) - const context: GetStaticPropsContext = { - previewData: { - resourceVersion: "id:-11", - }, - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - await expect( - client.getResourceFromContext("node--recipe", context, { - params: { - "fields[node--recipe]": "drupal_internal__vid", - }, - }) - ).rejects.toThrow( - "404 Not Found\nThe requested version, identified by `id:-11`, could not be found." - ) - }) - - test("it throws an error if revision access if forbidden", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - previewData: { - resourceVersion: "id:1", - }, - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - await expect( - client.getResourceFromContext("node--recipe", context, { - params: { - "fields[node--recipe]": "title", - }, - }) - ).rejects.toThrow( - "403 Forbidden\nThe current user is not allowed to GET the selected resource. The user does not have access to the requested version." - ) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - await client.getResourceFromContext("node--recipe", context) - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: false, - }) - ) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - await client.getResourceFromContext("node--recipe", context, { - withAuth: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) - - test("it makes authenticated requests when preview is true", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - const context: GetStaticPropsContext = { - preview: true, - previewData: { - plugin: "simple_oauth", - scope: "editor", - }, - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - await client.getResourceFromContext("node--recipe", context) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: `Bearer sample-token`, - }) - ) - }) - - test("it accepts a translated path", async () => { - const client = new DrupalClient(BASE_URL) - - const path = await client.translatePath("recipes/deep-mediterranean-quiche") - - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - const recipe = await client.getResourceFromContext(path, context, { - params: { - "fields[node--recipe]": "title,path,status", - }, - }) - - await expect(recipe).toMatchSnapshot() - }) -}) - -describe("translatePath", () => { - test("it translates a path", async () => { - const client = new DrupalClient(BASE_URL) - - const path = await client.translatePath("recipes/deep-mediterranean-quiche") - - expect(path).toMatchSnapshot() - - const path2 = await client.translatePath( - "/recipes/deep-mediterranean-quiche" - ) - - expect(path).toEqual(path2) - }) - - test("it returns null for path not found", async () => { - const client = new DrupalClient(BASE_URL) - - const path = await client.translatePath("/path-not-found") - - expect(path).toBeNull() - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.translatePath("recipes/deep-mediterranean-quiche") - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: false, - }) - ) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.translatePath("recipes/deep-mediterranean-quiche", { - withAuth: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("translatePathFromContext", () => { - test("it translates a path", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - - const path = await client.translatePathFromContext(context) - - expect(path).toMatchSnapshot() - }) - - test("it returns null for path not found", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - params: { - slug: ["path-not-found"], - }, - } - - const path = await client.translatePathFromContext(context) - - expect(path).toBeNull() - }) - - test("it translates a path with pathPrefix", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - params: { - slug: ["deep-mediterranean-quiche"], - }, - } - - const path = await client.translatePathFromContext(context, { - pathPrefix: "recipes", - }) - - expect(path).toMatchSnapshot() - - const path2 = await client.translatePathFromContext(context, { - pathPrefix: "/recipes", - }) - - expect(path).toEqual(path2) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - const context: GetStaticPropsContext = { - params: { - slug: ["recipes", "deep-mediterranean-quiche"], - }, - } - await client.translatePathFromContext(context) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: false, - }) - ) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - const context: GetStaticPropsContext = { - params: { - slug: ["deep-mediterranean-quiche"], - }, - } - await client.translatePathFromContext(context, { - pathPrefix: "recipes", - withAuth: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("getResourceCollection", () => { - test("it fetches a resource collection", async () => { - const client = new DrupalClient(BASE_URL) - - const articles = await client.getResourceCollection("node--article", { - params: { - "fields[node--article]": "title", - }, - }) - - expect(articles).toMatchSnapshot() - }) - - test("it fetches a resource collection using locale", async () => { - const client = new DrupalClient(BASE_URL) - - const articles = await client.getResourceCollection("node--article", { - locale: "es", - defaultLocale: "en", - params: { - "fields[node--article]": "title,langcode", - }, - }) - - expect(articles[0].langcode).toEqual("es") - - expect(articles).toMatchSnapshot() - }) - - test("it fetches raw data", async () => { - const client = new DrupalClient(BASE_URL) - - const recipes = await client.getResourceCollection("node--recipe", { - deserialize: false, - params: { - "fields[node--recipe]": "title", - "page[limit]": 2, - }, - }) - - expect(recipes).toMatchSnapshot() - }) - - test("it throws an error for invalid resource type", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceCollection("RESOURCE-DOES-NOT-EXIST") - ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") - }) - - test("it throws an error for invalid params", async () => { - const client = new DrupalClient(BASE_URL) - - await expect( - client.getResourceCollection("node--recipe", { - params: { - include: "invalid_relationship", - }, - }) - ).rejects.toThrow( - "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." - ) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.getResourceCollection("node--recipe") - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getResourceCollection("node--recipe", { - withAuth: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("getResourceCollectionFromContext", () => { - test("it fetches a resource collection", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - locale: "en", - defaultLocale: "en", - } - - const articles = await client.getResourceCollectionFromContext( - "node--article", - context, - { - params: { - "fields[node--article]": "title", - }, - } - ) - - expect(articles).toMatchSnapshot() - }) - - test("it fetches a resource collection using locale", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - locale: "es", - defaultLocale: "en", - } - - const articles = await client.getResourceCollectionFromContext( - "node--article", - context, - { - params: { - "fields[node--article]": "title,langcode", - }, - } - ) - - expect(articles[0].langcode).toEqual("es") - - expect(articles).toMatchSnapshot() - }) - - test("it fetches raw data", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - locale: "en", - defaultLocale: "en", - } - - const recipes = await client.getResourceCollectionFromContext( - "node--recipe", - context, - { - deserialize: false, - params: { - "fields[node--recipe]": "title", - "page[limit]": 2, - }, - } - ) - - expect(recipes).toMatchSnapshot() - }) - - test("it throws an error for invalid resource type", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - locale: "en", - defaultLocale: "en", - } - - await expect( - client.getResourceCollectionFromContext( - "RESOURCE-DOES-NOT-EXIST", - context - ) - ).rejects.toThrow("Resource of type 'RESOURCE-DOES-NOT-EXIST' not found.") - }) - - test("it throws an error for invalid params", async () => { - const client = new DrupalClient(BASE_URL) - - const context: GetStaticPropsContext = { - locale: "en", - defaultLocale: "en", - } - - await expect( - client.getResourceCollectionFromContext( - "node--recipe", - context, - { - params: { - include: "invalid_relationship", - }, - } - ) - ).rejects.toThrow( - "400 Bad Request\n`invalid_relationship` is not a valid relationship field name. Possible values: node_type, revision_uid, uid, menu_link, field_media_image, field_recipe_category, field_tags." - ) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - const context: GetStaticPropsContext = { - locale: "en", - defaultLocale: "en", - } - - await client.getResourceCollectionFromContext("node--recipe", context) - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - const context: GetStaticPropsContext = { - locale: "en", - defaultLocale: "en", - } - await client.getResourceCollectionFromContext("node--recipe", context, { - withAuth: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("getStaticPathsFromContext", () => { - test("it returns static paths from context", async () => { - const client = new DrupalClient(BASE_URL) - - const paths = await client.getStaticPathsFromContext("node--article", {}) - - expect(paths).toMatchSnapshot() - }) - - test("it returns static paths from context with locale", async () => { - const client = new DrupalClient(BASE_URL) - - const paths = await client.getStaticPathsFromContext("node--article", { - locales: ["en", "es"], - defaultLocale: "en", - }) - - expect(paths).toMatchSnapshot() - }) - - test("it returns static paths for multiple resoure types from context", async () => { - const client = new DrupalClient(BASE_URL) - - const paths = await client.getStaticPathsFromContext( - ["node--article", "node--recipe"], - { - locales: ["en", "es"], - defaultLocale: "en", - } - ) - - expect(paths).toMatchSnapshot() - }) - - test("it returns static paths from context with params", async () => { - const client = new DrupalClient(BASE_URL) - - const paths = await client.getStaticPathsFromContext( - "node--article", - {}, - { - params: { - "filter[promote]": 1, - }, - } - ) - - expect(paths).toMatchSnapshot() - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.getStaticPathsFromContext("node--article", { - locales: ["en", "es"], - defaultLocale: "en", - }) - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getStaticPathsFromContext( - "node--article", - { - locales: ["en", "es"], - defaultLocale: "en", - }, - { - withAuth: true, - } - ) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("buildStaticPathsParamsFromPaths", () => { - test("it builds static paths from paths", () => { - const client = new DrupalClient(BASE_URL) - - const paths = ["/blog/post/one", "/blog/post/two", "/blog/post/three"] - - expect(client.buildStaticPathsParamsFromPaths(paths)).toMatchSnapshot() - - expect( - client.buildStaticPathsParamsFromPaths(paths, { locale: "en" }) - ).toMatchSnapshot() - }) - - test("it builds static paths from paths with pathPrefix", () => { - const client = new DrupalClient(BASE_URL) - - const paths = client.buildStaticPathsParamsFromPaths( - ["/blog/post/one", "/blog/post/two", "/blog/post"], - { pathPrefix: "blog" } - ) - - const paths2 = client.buildStaticPathsParamsFromPaths( - ["/blog/post/one", "/blog/post/two", "/blog/post"], - { pathPrefix: "/blog" } - ) - - const paths3 = client.buildStaticPathsParamsFromPaths( - ["blog/post/one", "blog/post/two", "blog/post"], - { pathPrefix: "/blog" } - ) - - const paths4 = client.buildStaticPathsParamsFromPaths( - ["blog/post/one", "blog/post/two", "blog/post"], - { pathPrefix: "blog" } - ) - - expect(paths).toMatchSnapshot() - - expect(paths).toEqual(paths2) - expect(paths).toEqual(paths3) - expect(paths).toEqual(paths4) - }) -}) - -describe("buildStaticPathsFromResources", () => { - test("it builds static paths from resources", () => { - const client = new DrupalClient(BASE_URL) - - const resources: Pick[] = [ - { - path: { - alias: "blog/post/one", - pid: 1, - langcode: "en", - }, - }, - { - path: { - alias: "blog/post/two", - pid: 2, - langcode: "en", - }, - }, - ] - - expect(client.buildStaticPathsFromResources(resources)).toMatchSnapshot() - - expect( - client.buildStaticPathsFromResources(resources, { locale: "es" }) - ).toMatchSnapshot() - }) - - test("it builds static paths from resources with pathPrefix", () => { - const client = new DrupalClient(BASE_URL) - - const resources: Pick[] = [ - { - path: { - alias: "blog/post/one", - pid: 1, - langcode: "en", - }, - }, - { - path: { - alias: "blog/post/two", - pid: 2, - langcode: "en", - }, - }, - ] - - const paths = client.buildStaticPathsFromResources(resources, { - pathPrefix: "blog", - }) - - const paths2 = client.buildStaticPathsFromResources(resources, { - pathPrefix: "/blog", - }) - - const paths3 = client.buildStaticPathsFromResources(resources, { - pathPrefix: "/blog/post", - locale: "es", - }) - - const paths4 = client.buildStaticPathsFromResources(resources, { - pathPrefix: "blog/post", - locale: "es", - }) - - expect(paths).toMatchSnapshot() - expect(paths3).toMatchSnapshot() - - expect(paths).toEqual(paths2) - expect(paths3).toEqual(paths4) - }) -}) - -describe("getMenu", () => { - test("it fetches menu items for a menu", async () => { - const client = new DrupalClient(BASE_URL) - - const menu = await client.getMenu("main") - - expect(menu).toMatchSnapshot() - }) - - test("it fetches menu items for a menu with locale", async () => { - const client = new DrupalClient(BASE_URL) - - const menu = await client.getMenu("main", { - locale: "es", - defaultLocale: "en", - }) - - expect(menu).toMatchSnapshot() - }) - - test("it fetches menu items for a menu with params", async () => { - const client = new DrupalClient(BASE_URL) - - const menu = await client.getMenu("main", { - params: { - "fields[menu_link_content--menu_link_content]": "title", - }, - }) - - expect(menu).toMatchSnapshot() - }) - - test("it throws an error for invalid menu name", async () => { - const client = new DrupalClient(BASE_URL) - - await expect(client.getMenu("INVALID")).rejects.toThrow( - '404 Not Found\nThe "menu" parameter was not converted for the path "/jsonapi/menu_items/{menu}" (route name: "jsonapi_menu_items.menu")' - ) - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.getMenu("main") - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getMenu("main", { withAuth: true }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("getView", () => { - test("it fetches a view", async () => { - const client = new DrupalClient(BASE_URL) - - const view = await client.getView("featured_articles--page_1") - - expect(view).toMatchSnapshot() - }) - - test("it fetches a view with params", async () => { - const client = new DrupalClient(BASE_URL) - - const view = await client.getView("featured_articles--page_1", { - params: { - "fields[node--article]": "title", - }, - }) - - expect(view).toMatchSnapshot() - }) - - test("it fetches a view with locale", async () => { - const client = new DrupalClient(BASE_URL) - - const view = await client.getView("featured_articles--page_1", { - locale: "es", - defaultLocale: "en", - params: { - "fields[node--article]": "title", - }, - }) - - expect(view).toMatchSnapshot() - }) - - test("it fetches raw data", async () => { - const client = new DrupalClient(BASE_URL) - - const view = await client.getView("featured_articles--page_1", { - locale: "es", - defaultLocale: "en", - deserialize: false, - params: { - "fields[node--article]": "title", - }, - }) - - expect(view).toMatchSnapshot() - }) - - test("it throws an error for invalid view name", async () => { - const client = new DrupalClient(BASE_URL) - - await expect(client.getView("INVALID")).rejects.toThrow("Not Found") - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.getView("featured_articles--page_1") - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getView("featured_articles--page_1", { withAuth: true }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) - - test("it fetches a view with links for pagination", async () => { - const client = new DrupalClient(BASE_URL) - const view = await client.getView("recipes--page_1") - - expect(view.links).toHaveProperty("next") - }) -}) - -describe("getSearchIndex", () => { - test("it fetches a search index", async () => { - const client = new DrupalClient(BASE_URL) - - const search = await client.getSearchIndex("recipes", { - params: { - "fields[node--recipe]": "title", - }, - }) - - expect(search).toMatchSnapshot() - }) - - test("it fetches a search index with locale", async () => { - const client = new DrupalClient(BASE_URL) - - const search = await client.getSearchIndex("recipes", { - locale: "es", - defaultLocale: "en", - params: { - "fields[node--recipe]": "title", - }, - }) - - expect(search).toMatchSnapshot() - }) - - test("it fetches a search index with facets filters", async () => { - const client = new DrupalClient(BASE_URL) - - const search = await client.getSearchIndex( - "recipes", - { - deserialize: false, - params: { - "filter[difficulty]": "easy", - "fields[node--recipe]": "title,field_difficulty", - }, - } - ) - - expect(search).toMatchSnapshot() - expect(search.meta.facets).not.toBeNull() - }) - - test("it fetches raw data from search index", async () => { - const client = new DrupalClient(BASE_URL) - - const search = await client.getSearchIndex("recipes", { - deserialize: false, - params: { - "filter[difficulty]": "easy", - "fields[node--recipe]": "title,field_difficulty", - }, - }) - - expect(search).toMatchSnapshot() - }) - - test("it makes un-authenticated requests by default", async () => { - const client = new DrupalClient(BASE_URL) - const fetchSpy = jest.spyOn(client, "fetch") - - await client.getSearchIndex("recipes") - - expect(fetchSpy).toHaveBeenCalledWith(expect.anything(), { - withAuth: false, - }) - }) - - test("it throws an error for invalid index", async () => { - const client = new DrupalClient(BASE_URL) - - await expect(client.getSearchIndex("INVALID-INDEX")).rejects.toThrow( - "Not Found" - ) - }) - - test("it makes authenticated requests with withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - useDefaultResourceTypeEntry: true, - auth: `Bearer sample-token`, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getSearchIndex("recipes", { - withAuth: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) -}) - -describe("getAuthFromContextAndOptions", () => { - test("if NOT in preview and withAuth option is provided, it should use the withAuth option", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - jest.spyOn(client, "getAccessToken").mockImplementation() - - await client.getResourceFromContext( - "node--article", - { - preview: false, - }, - { - withAuth: true, - } - ) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - - await client.getResourceFromContext( - "node--article", - { - preview: false, - }, - { - withAuth: { - clientId: "foo", - clientSecret: "bar", - scope: "baz", - }, - } - ) - - expect(fetchSpy).toHaveBeenLastCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: { - clientId: "foo", - clientSecret: "bar", - scope: "baz", - }, - }) - ) - }) - - test("if NOT in preview and no withAuth option provided, it should fallback to the global auth", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.getResourceFromContext("node--article", { - preview: false, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: false, - }) - ) - - const client2 = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - withAuth: true, - }) - jest.spyOn(client2, "getAccessToken").mockImplementation() - - await client2.getResourceFromContext("node--article", { - preview: false, - }) - - expect(fetchSpy).toHaveBeenLastCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: true, - }) - ) - }) - - test("if in preview, it should NOT use the global auth", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - withAuth: true, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.getResourceFromContext("node--article", { - preview: true, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: null, - }) - ) - }) - - test("if in preview and using the simple_oauth plugin, it should use the scope from context", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.getResourceFromContext("node--article", { - preview: true, - previewData: { - plugin: "simple_oauth", - scope: "editor", - }, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - scope: "editor", - url: "/oauth/token", - }, - }) - ) - }) - - test("if in preview and using the simple_oauth plugin, tt should use the scope from context even with global withAuth", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - scope: "administrator", - }, - withAuth: true, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.getResourceFromContext("node--article", { - preview: true, - previewData: { - plugin: "simple_oauth", - scope: "editor", - }, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - scope: "editor", - url: "/oauth/token", - }, - }) - ) - }) - - test("if in preview and using the jwt plugin, it should use the access_token from context", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - }, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.getResourceFromContext("node--article", { - preview: true, - previewData: { - plugin: "jwt", - access_token: "example-token", - }, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: `Bearer example-token`, - }) - ) - }) - - test("if in preview and using the jwt plugin, t should use the access token from context even with global withAuth", async () => { - const client = new DrupalClient(BASE_URL, { - auth: { - clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", - clientSecret: "d92Fm^ds", - scope: "administrator", - }, - withAuth: true, - }) - const fetchSpy = jest - .spyOn(global, "fetch") - .mockImplementation( - jest.fn(() => - Promise.resolve({ ok: true, json: () => Promise.resolve({}) }) - ) as jest.Mock - ) - - await client.getResourceFromContext("node--article", { - preview: true, - previewData: { - plugin: "jwt", - access_token: "example-token", - }, - }) - - expect(fetchSpy).toHaveBeenCalledWith( - expect.anything(), - expect.objectContaining({ - withAuth: `Bearer example-token`, - }) - ) - }) -}) diff --git a/packages/next-drupal/tests/draft/draft.test.ts b/packages/next-drupal/tests/draft/draft.test.ts new file mode 100644 index 00000000..10499087 --- /dev/null +++ b/packages/next-drupal/tests/draft/draft.test.ts @@ -0,0 +1,206 @@ +import { + afterEach, + beforeEach, + describe, + expect, + jest, + test, +} from "@jest/globals" +import { cookies, draftMode } from "next/headers" +import { redirect } from "next/navigation" +import { NextRequest } from "next/server" +import { + DRAFT_DATA_COOKIE_NAME, + DRAFT_MODE_COOKIE_NAME, + DrupalClient, +} from "../../src" +import { BASE_URL, spyOnFetch } from "../utils" +import { + disableDraftMode, + enableDraftMode, + getDraftData, +} from "../../src/draft" +import { resetNextHeaders } from "../__mocks__/next/headers" +import type { ResponseCookie } from "next/dist/compiled/@edge-runtime/cookies" + +jest.mock("next/headers") +jest.mock("next/navigation", () => ({ + redirect: jest.fn(), +})) + +beforeEach(() => { + resetNextHeaders() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe("enableDraftMode()", () => { + const searchParams = new URLSearchParams({ + slug: "/example", + resourceVersion: "id:1", + plugin: "simple_oauth", + secret: "very-secret-key", + }) + const validationPayload = { + path: "/example", + maxAge: 30, + } + const request = new NextRequest( + `https://example.com/api/draft?${searchParams}` + ) + const client = new DrupalClient(BASE_URL) + const draftModeCookie: ResponseCookie = { + name: DRAFT_MODE_COOKIE_NAME, + value: "some-secret-key", + sameSite: "lax", + } + + test("does not enable draft mode if validation fails", async () => { + spyOnFetch({ responseBody: { message: "fail" }, status: 500 }) + + const response = await enableDraftMode(request, client) + + expect(draftMode().enable).not.toHaveBeenCalled() + expect(response).toBeInstanceOf(Response) + expect(response.status).toBe(500) + }) + + test("enables draft mode", async () => { + spyOnFetch({ responseBody: validationPayload }) + + await enableDraftMode(request, client) + + expect(draftMode().enable).toHaveBeenCalled() + }) + + test("updates draft mode cookie’s sameSite flag", async () => { + spyOnFetch({ responseBody: validationPayload }) + + // Our mock draftMode().enable does not set a cookie, so we set one. + cookies().set(draftModeCookie) + expect(cookies().get(DRAFT_MODE_COOKIE_NAME).sameSite).toBe("lax") + expect(cookies().get(DRAFT_MODE_COOKIE_NAME).secure).toBeFalsy() + + await enableDraftMode(request, client) + + expect(cookies().get(DRAFT_MODE_COOKIE_NAME).sameSite).toBe("none") + expect(cookies().get(DRAFT_MODE_COOKIE_NAME).secure).toBe(true) + }) + + test("sets a draft data cookie", async () => { + spyOnFetch({ responseBody: validationPayload }) + expect(cookies().get(DRAFT_DATA_COOKIE_NAME)).toBe(undefined) + + await enableDraftMode(request, client) + + const cookie = cookies().get(DRAFT_DATA_COOKIE_NAME) + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { secret, plugin, ...data } = Object.fromEntries( + searchParams.entries() + ) + expect(cookie).toMatchObject({ + name: DRAFT_DATA_COOKIE_NAME, + sameSite: "none", + secure: true, + value: JSON.stringify(data), + }) + }) + + test("redirects to the slug path", async () => { + spyOnFetch({ responseBody: validationPayload }) + + await enableDraftMode(request, client) + + expect(redirect).toHaveBeenCalledWith(searchParams.get("slug")) + }) +}) + +describe("disableDraftMode()", () => { + test("draft data cookie was deleted", () => { + disableDraftMode() + + expect(cookies).toHaveBeenCalledTimes(1) + expect(cookies().delete).toHaveBeenCalledWith(DRAFT_DATA_COOKIE_NAME) + }) + + test("draft mode was disabled", () => { + // First ensure draft mode is enabled. + draftMode().enable() + expect(draftMode().isEnabled).toBe(true) + + disableDraftMode() + expect(draftMode().disable).toHaveBeenCalledTimes(1) + expect(draftMode().isEnabled).toBe(false) + }) + + test("returns a response object", async () => { + const response = disableDraftMode() + + expect(response).toBeInstanceOf(Response) + expect(response.ok).toBe(true) + expect(await response.text()).toBe("Draft mode is disabled") + }) +}) + +describe("getDraftData()", () => { + const draftData = { + slug: "/example", + resourceVersion: "id:1", + } + const draftDataCookie: ResponseCookie = { + name: DRAFT_DATA_COOKIE_NAME, + value: JSON.stringify(draftData), + sameSite: "none", + secure: true, + } + + test("returns empty object if draft mode disabled", () => { + cookies().set(draftDataCookie) + + const data = getDraftData() + expect(draftMode().isEnabled).toBe(false) + expect(cookies().has).toHaveBeenCalledTimes(0) + expect(cookies().get).toHaveBeenCalledTimes(0) + expect(data).toMatchObject({}) + }) + + test("returns empty object if no draft data cookie", () => { + draftMode().enable() + draftMode.mockClear() + + const data = getDraftData() + expect(draftMode).toHaveBeenCalledTimes(1) + expect(draftMode().isEnabled).toBe(true) + expect(cookies().has).toHaveBeenCalledWith(DRAFT_DATA_COOKIE_NAME) + expect(cookies().has).toHaveBeenCalledTimes(1) + expect(cookies().get).toHaveBeenCalledTimes(0) + expect(data).toMatchObject({}) + }) + + test("returns empty object if no draft data cookie value", () => { + cookies().set({ + ...draftDataCookie, + value: "", + }) + draftMode().enable() + draftMode.mockClear() + + const data = getDraftData() + expect(draftMode).toHaveBeenCalledTimes(1) + expect(draftMode().isEnabled).toBe(true) + expect(cookies().has).toHaveBeenCalledWith(DRAFT_DATA_COOKIE_NAME) + expect(cookies().has).toHaveBeenCalledTimes(1) + expect(cookies().get).toHaveBeenCalledWith(DRAFT_DATA_COOKIE_NAME) + expect(cookies().get).toHaveBeenCalledTimes(1) + expect(data).toMatchObject({}) + }) + + test("returns the JSON.parse()d data", () => { + cookies().set(draftDataCookie) + draftMode().enable() + + expect(getDraftData()).toMatchObject(draftData) + }) +}) diff --git a/packages/next-drupal/tests/utils/index.ts b/packages/next-drupal/tests/utils/index.ts new file mode 100644 index 00000000..a6dd3e49 --- /dev/null +++ b/packages/next-drupal/tests/utils/index.ts @@ -0,0 +1,2 @@ +export * from "./mocks" +export * from "./rpc" diff --git a/packages/next-drupal/tests/utils/mocks/data.ts b/packages/next-drupal/tests/utils/mocks/data.ts new file mode 100644 index 00000000..95ec1895 --- /dev/null +++ b/packages/next-drupal/tests/utils/mocks/data.ts @@ -0,0 +1,365 @@ +import type { + DrupalClientAuth, + DrupalClientAuthAccessToken, + DrupalClientAuthClientIdSecret, + DrupalClientAuthUsernamePassword, +} from "../../../src" + +// Run all tests against this env until we configure CI to setup a Drupal instance. +// TODO: Bootstrap and expose the /drupal env for testing. +export const BASE_URL = process.env["DRUPAL_BASE_URL"] as string + +const auth = { + basicAuth: { + username: "admin", + password: "example", + } as DrupalClientAuthUsernamePassword, + accessToken: { + access_token: "ECYM594IlARGc3S8KgBHvTpki0rDtWx6", + token_type: "bearer", + expires_in: 3600, + } as DrupalClientAuthAccessToken, + clientIdSecret: { + clientId: "7795065e-8ad0-45eb-a64d-73d9f3a5e943", + clientSecret: "d92Fm^ds", + } as DrupalClientAuthClientIdSecret, + function: function authFunction() { + return "custom Authentication header from authFunction" + } as DrupalClientAuth, + customAuthenticationHeader: + "custom Authentication header from string" as DrupalClientAuth, +} + +const resources = { + file: { + jsonapi: { + version: "1.0", + meta: { links: { self: { href: "http://jsonapi.org/format/1.0/" } } }, + }, + data: { + type: "file--file", + id: "641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + links: { + self: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + }, + }, + attributes: { + drupal_internal__fid: 1, + langcode: "en", + filename: "mediterranean-quiche-umami.jpg", + uri: { + value: "public://mediterranean-quiche-umami.jpg", + url: "/sites/default/files/mediterranean-quiche-umami.jpg", + }, + filemime: "image/jpeg", + filesize: 70160, + status: true, + created: "2022-03-21T10:52:42+00:00", + changed: "2022-03-21T10:52:42+00:00", + }, + relationships: { + uid: { + data: null, + links: { + related: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9/uid", + }, + self: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9/relationships/uid", + }, + }, + }, + }, + }, + links: { + self: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + }, + }, + }, + mediaImage: { + jsonapi: { + version: "1.0", + meta: { links: { self: { href: "http://jsonapi.org/format/1.0/" } } }, + }, + data: { + type: "media--image", + id: "bbfe9d97-2da2-432b-a22c-0396c08e06ca", + links: { + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca?resourceVersion=id%3A1", + }, + }, + attributes: { + drupal_internal__mid: 1, + drupal_internal__vid: 1, + langcode: "en", + revision_created: "2022-03-21T10:52:42+00:00", + revision_log_message: null, + status: true, + name: "Deep mediterranean quiche", + created: "2022-03-21T10:52:42+00:00", + changed: "2022-03-21T10:52:42+00:00", + default_langcode: true, + revision_translation_affected: true, + path: { alias: null, pid: null, langcode: "en" }, + content_translation_source: "und", + content_translation_outdated: false, + }, + relationships: { + bundle: { + data: { + type: "media_type--media_type", + id: "afec21c2-d0a9-4e0e-8c3a-1cd6d5a8fc92", + meta: { drupal_internal__target_id: "image" }, + }, + links: { + related: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/bundle?resourceVersion=id%3A1", + }, + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/relationships/bundle?resourceVersion=id%3A1", + }, + }, + }, + revision_user: { + data: null, + links: { + related: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/revision_user?resourceVersion=id%3A1", + }, + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/relationships/revision_user?resourceVersion=id%3A1", + }, + }, + }, + uid: { + data: { + type: "user--user", + id: "256a133b-0bd7-4426-a823-b8ce81e0d778", + meta: { drupal_internal__target_id: 0 }, + }, + links: { + related: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/uid?resourceVersion=id%3A1", + }, + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/relationships/uid?resourceVersion=id%3A1", + }, + }, + }, + thumbnail: { + data: { + type: "file--file", + id: "641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + meta: { + alt: "A delicious deep layered Mediterranean quiche with basil garnish", + title: null, + width: 768, + height: 511, + drupal_internal__target_id: 1, + }, + }, + links: { + related: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/thumbnail?resourceVersion=id%3A1", + }, + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/relationships/thumbnail?resourceVersion=id%3A1", + }, + }, + }, + field_media_image: { + data: { + type: "file--file", + id: "641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + meta: { + alt: "A delicious deep layered Mediterranean quiche with basil garnish", + title: null, + width: 768, + height: 511, + drupal_internal__target_id: 1, + }, + }, + links: { + related: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/field_media_image?resourceVersion=id%3A1", + }, + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca/relationships/field_media_image?resourceVersion=id%3A1", + }, + }, + }, + }, + }, + included: [ + { + type: "file--file", + id: "641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + links: { + self: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9", + }, + }, + attributes: { + drupal_internal__fid: 1, + langcode: "en", + filename: "mediterranean-quiche-umami.jpg", + uri: { + value: "public://mediterranean-quiche-umami.jpg", + url: "/sites/default/files/mediterranean-quiche-umami.jpg", + }, + filemime: "image/jpeg", + filesize: 70160, + status: true, + created: "2022-03-21T10:52:42+00:00", + changed: "2022-03-21T10:52:42+00:00", + }, + relationships: { + uid: { + data: null, + links: { + related: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9/uid", + }, + self: { + href: "https://example.com/en/jsonapi/file/file/641fc6a4-276d-43e9-abbd-1e51bc28ddf9/relationships/uid", + }, + }, + }, + }, + }, + ], + links: { + self: { + href: "https://example.com/en/jsonapi/media/image/bbfe9d97-2da2-432b-a22c-0396c08e06ca?include=field_media_image\u0026resourceVersion=id%3A1", + }, + }, + }, +} + +const menus = { + menuItems: { + jsonapi: { + version: "1.0", + meta: { + links: { + self: { + href: "http://jsonapi.org/format/1.0/", + }, + }, + }, + }, + data: [ + { + type: "menu_link_content--menu_link_content", + id: "standard.front_page", + attributes: { + description: "", + enabled: true, + expanded: false, + menu_name: "main", + meta: [], + options: [], + parent: "", + provider: "demo_umami", + route: { + name: "", + parameters: [], + }, + title: "Home", + url: "/en", + weight: "0", + }, + }, + { + type: "menu_link_content--menu_link_content", + id: "views_view:views.featured_articles.page_1", + attributes: { + description: "", + enabled: true, + expanded: false, + menu_name: "main", + meta: { + view_id: "featured_articles", + display_id: "page_1", + }, + options: [], + parent: "", + provider: "views", + route: { + name: "view.featured_articles.page_1", + parameters: [], + }, + title: "Articles", + url: "/en/articles", + weight: "20", + }, + }, + { + type: "menu_link_content--menu_link_content", + id: "views_view:views.recipes.page_1", + attributes: { + description: "", + enabled: true, + expanded: false, + menu_name: "main", + meta: { + view_id: "recipes", + display_id: "page_1", + }, + options: [], + parent: "", + provider: "views", + route: { + name: "view.recipes.page_1", + parameters: [], + }, + title: "Recipes", + url: "/en/recipes", + weight: "30", + }, + }, + ], + links: { + self: { + href: "https://next-drupal-test.ddev.site/jsonapi/menu_items/main", + }, + }, + }, + invalidMenu: { + jsonapi: { + version: "1.0", + meta: { + links: { + self: { + href: "http://jsonapi.org/format/1.0/", + }, + }, + }, + }, + errors: [ + { + title: "Not Found", + status: "404", + detail: + 'The "menu" parameter was not converted for the path "/jsonapi/menu_items/{menu}" (route name: "jsonapi_menu_items.menu")', + links: { + via: { + href: "https://next-drupal-test.ddev.site/jsonapi/menu_items/INVALID", + }, + info: { + href: "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5", + }, + }, + }, + ], + }, +} + +export const mocks = { + auth, + resources, + menus, +} diff --git a/packages/next-drupal/tests/utils/mocks/fetch.ts b/packages/next-drupal/tests/utils/mocks/fetch.ts new file mode 100644 index 00000000..b33122ca --- /dev/null +++ b/packages/next-drupal/tests/utils/mocks/fetch.ts @@ -0,0 +1,63 @@ +import { jest } from "@jest/globals" + +interface SpyOnFetchParams { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + responseBody?: any + throwErrorMessage?: string + status?: number + headers?: Record +} + +export function spyOnFetch({ + responseBody = null, + throwErrorMessage = null, + status = 200, + headers = {}, +}: SpyOnFetchParams = {}) { + return jest.spyOn(global, "fetch").mockImplementation( + fetchMockImplementation({ + responseBody, + throwErrorMessage, + status, + headers, + }) + ) +} + +export function spyOnFetchOnce({ + responseBody = null, + throwErrorMessage = null, + status = 200, + headers = {}, +}: SpyOnFetchParams) { + return jest.spyOn(global, "fetch").mockImplementationOnce( + fetchMockImplementation({ + responseBody, + throwErrorMessage, + status, + headers, + }) + ) +} + +function fetchMockImplementation({ + responseBody = null, + throwErrorMessage = null, + status = 200, + headers = {}, +}: SpyOnFetchParams) { + if (throwErrorMessage) { + return async () => { + throw new Error(throwErrorMessage) + } + } + + return async () => + new Response(JSON.stringify(responseBody || {}), { + status, + headers: { + "content-type": "application/vnd.api+json", + ...headers, + }, + }) +} diff --git a/packages/next-drupal/tests/utils/mocks/index.ts b/packages/next-drupal/tests/utils/mocks/index.ts new file mode 100644 index 00000000..96ddd33a --- /dev/null +++ b/packages/next-drupal/tests/utils/mocks/index.ts @@ -0,0 +1,3 @@ +export * from "./data" +export * from "./fetch" +export * from "./logger" diff --git a/packages/next-drupal/tests/utils/mocks/logger.ts b/packages/next-drupal/tests/utils/mocks/logger.ts new file mode 100644 index 00000000..bd696ee5 --- /dev/null +++ b/packages/next-drupal/tests/utils/mocks/logger.ts @@ -0,0 +1,10 @@ +import { Logger } from "../../../src" + +export function mockLogger(): Logger { + return { + log: jest.fn(), + debug: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + } +} diff --git a/packages/next-drupal/tests/utils.ts b/packages/next-drupal/tests/utils/rpc.ts similarity index 76% rename from packages/next-drupal/tests/utils.ts rename to packages/next-drupal/tests/utils/rpc.ts index 762eb6ba..1b4aae67 100644 --- a/packages/next-drupal/tests/utils.ts +++ b/packages/next-drupal/tests/utils/rpc.ts @@ -1,8 +1,5 @@ -import { DrupalClient } from "../src/client" - -// Run all tests against this env until we configure CI to setup a Drupal instance. -// TODO: Bootstrap and expose the /drupal env for testing. -export const BASE_URL = process.env["DRUPAL_BASE_URL"] as string +import { DrupalClient } from "../../src" +import { BASE_URL } from "./index" const client = new DrupalClient(BASE_URL, { auth: { diff --git a/packages/next-drupal/tsconfig.json b/packages/next-drupal/tsconfig.json index 6741d9f5..a5cb75c5 100644 --- a/packages/next-drupal/tsconfig.json +++ b/packages/next-drupal/tsconfig.json @@ -1,7 +1,4 @@ { "extends": "../../tsconfig.json", - "compilerOptions": { - "isolatedModules": false - }, "include": ["src/**/*.ts"] } diff --git a/packages/next-drupal/tsup.config.ts b/packages/next-drupal/tsup.config.ts new file mode 100644 index 00000000..b7692abe --- /dev/null +++ b/packages/next-drupal/tsup.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "tsup" + +export const tsup = defineConfig({ + entry: ["src/index.ts", "src/draft.ts", "src/navigation.ts"], + // Enable experimental code splitting support in CommonJS. + // splitting: true, + // Use Rollup for tree shaking. + // treeshake: true, + sourcemap: true, + clean: true, + format: ["esm", "cjs"], + dts: true, + cjsInterop: true, +}) diff --git a/scripts/sync-examples.sh b/scripts/sync-examples.sh deleted file mode 100755 index 35ce4e50..00000000 --- a/scripts/sync-examples.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e # bail on errors -GLOB=$1 -IS_CI="${CI:-false}" -BASE=$(pwd) -COMMIT_MESSAGE=$(git log -1 --pretty=%B) - -for folder in $GLOB; do - [ -d "$folder" ] || continue - cd $BASE - - NAME=${folder##*/} - CLONE_DIR="__${NAME}__clone__" - - # sync to read-only clones - # clone, delete files in the clone, and copy (new) files over - # this handles file deletions, additions, and changes seamlessly - # note: redirect output to dev/null to avoid any possibility of leaking token - git clone --quiet --depth 1 https://github.com/chapter-three/next-${NAME}.git $CLONE_DIR > /dev/null - cd $CLONE_DIR - find . | grep -v ".git" | grep -v "^\.*$" | xargs rm -rf # delete all files (to handle deletions in monorepo) - cp -r $BASE/$folder/. . - - if [ -n "$(git status --porcelain)" ]; then - git add . - git commit -m "$COMMIT_MESSAGE" - git push origin main - fi - - cd $BASE - rm -rf $CLONE_DIR -done diff --git a/scripts/sync-modules.sh b/scripts/sync-modules.sh deleted file mode 100755 index 702124e1..00000000 --- a/scripts/sync-modules.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e # bail on errors -GLOB=$1 -IS_CI="${CI:-false}" -BASE=$(pwd) -COMMIT_MESSAGE=$(git log -1 --pretty=%B) - -for folder in $GLOB; do - [ -d "$folder" ] || continue - cd $BASE - - NAME=${folder##*/} - CLONE_DIR="__${NAME}__clone__" - - # sync to read-only clones - # clone, delete files in the clone, and copy (new) files over - # this handles file deletions, additions, and changes seamlessly - # note: redirect output to dev/null to avoid any possibility of leaking token - git clone --quiet --depth 1 git@git.drupal.org:project/$NAME.git $CLONE_DIR > /dev/null - cd $CLONE_DIR - find . | grep -v ".git" | grep -v "^\.*$" | xargs rm -rf # delete all files (to handle deletions in monorepo) - cp -r $BASE/$folder/. . - - if [ -n "$(git status --porcelain)" ]; then - git add . - git commit -m "$COMMIT_MESSAGE" - git push origin 1.0.x - fi - - cd $BASE - rm -rf $CLONE_DIR -done diff --git a/scripts/sync-repo.sh b/scripts/sync-repo.sh new file mode 100755 index 00000000..1784c02d --- /dev/null +++ b/scripts/sync-repo.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# Script to sync packages to read-only git clones +# +# This handles file deletions, additions, and changes seamlessly + +set -e # bail on errors + +BRANCHES=$1 +REPO=$2 +GLOB=$3 + +# Allow BRANCHES to be a comma-seperated list. +BRANCH=$(echo $BRANCHES | cut -d "," -f 1) +TRACKING_BRANCH=$(echo $BRANCHES | cut -d "," -f 2) + +BASE=$(pwd) +COMMIT_MESSAGE=$(git log -1 --pretty=%B) + +for folder in $GLOB; do + [ -d "$folder" ] || continue + cd $BASE + + NAME=${folder##*/} + CLONE_DIR="__${NAME}__clone__" + + # Note: redirect output to dev/null to avoid any possibility of leaking token + git clone --quiet --depth 1 --branch ${BRANCH} ${REPO}${NAME}.git $CLONE_DIR > /dev/null + cd $CLONE_DIR + + # Delete all files (to handle deletions in monorepo) + find . | grep -v ".git" | grep -v "^\.*$" | xargs rm -rf + + # Copy new files to the clone + cp -r $BASE/$folder/. . + + if [ -n "$(git status --porcelain)" ]; then + git add . + git commit -m "$COMMIT_MESSAGE" + git push origin ${BRANCH} + fi + + if [ "$TRACKING_BRANCH" != "$BRANCH" ]; then + git push origin ${BRANCH}:${TRACKING_BRANCH} + fi + + cd $BASE + rm -rf $CLONE_DIR +done diff --git a/scripts/sync-starters.sh b/scripts/sync-starters.sh deleted file mode 100755 index ea6946f9..00000000 --- a/scripts/sync-starters.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e # bail on errors -GLOB=$1 -IS_CI="${CI:-false}" -BASE=$(pwd) -COMMIT_MESSAGE=$(git log -1 --pretty=%B) - -for folder in $GLOB; do - [ -d "$folder" ] || continue - cd $BASE - - NAME=${folder##*/} - CLONE_DIR="__${NAME}__clone__" - - # sync to read-only clones - # clone, delete files in the clone, and copy (new) files over - # this handles file deletions, additions, and changes seamlessly - # note: redirect output to dev/null to avoid any possibility of leaking token - git clone --quiet --depth 1 https://github.com/chapter-three/next-drupal-${NAME}.git $CLONE_DIR > /dev/null - cd $CLONE_DIR - find . | grep -v ".git" | grep -v "^\.*$" | xargs rm -rf # delete all files (to handle deletions in monorepo) - cp -r $BASE/$folder/. . - - if [ -n "$(git status --porcelain)" ]; then - git add . - git commit -m "$COMMIT_MESSAGE" - git push origin main - fi - - cd $BASE - rm -rf $CLONE_DIR -done diff --git a/starters/.gitignore b/starters/.gitignore new file mode 100644 index 00000000..7a1a9fda --- /dev/null +++ b/starters/.gitignore @@ -0,0 +1,4 @@ +# Starters should never have a lock file. +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/starters/basic-starter/.env.example b/starters/basic-starter/.env.example index a9209418..f0a9bcf3 100644 --- a/starters/basic-starter/.env.example +++ b/starters/basic-starter/.env.example @@ -1,6 +1,15 @@ # See https://next-drupal.org/docs/environment-variables -NEXT_PUBLIC_DRUPAL_BASE_URL=https://dev.next-drupal.org -NEXT_IMAGE_DOMAIN=dev.next-drupal.org + +# Required +NEXT_PUBLIC_DRUPAL_BASE_URL=https://site.example.com +NEXT_IMAGE_DOMAIN=site.example.com + +# Authentication +DRUPAL_CLIENT_ID=Retrieve this from /admin/config/services/consumer +DRUPAL_CLIENT_SECRET=Retrieve this from /admin/config/services/consumer + +# Required for Preview Mode +DRUPAL_PREVIEW_SECRET=Retrieve this from /admin/config/services/next # Required for On-demand Revalidation -DRUPAL_REVALIDATE_SECRET=secret \ No newline at end of file +DRUPAL_REVALIDATE_SECRET=Retrieve this from /admin/config/services/next diff --git a/starters/basic-starter/.eslintrc.json b/starters/basic-starter/.eslintrc.json index abd5579b..7c1a3add 100644 --- a/starters/basic-starter/.eslintrc.json +++ b/starters/basic-starter/.eslintrc.json @@ -1,4 +1,4 @@ { - "extends": "next", + "extends": "next/core-web-vitals", "root": true } diff --git a/starters/basic-starter/.gitignore b/starters/basic-starter/.gitignore index 78adc9ed..83ec79b6 100644 --- a/starters/basic-starter/.gitignore +++ b/starters/basic-starter/.gitignore @@ -4,14 +4,15 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage # next.js /.next/ /out/ -.next # production /build @@ -20,19 +21,21 @@ .DS_Store *.pem +# IDE files +/.idea +/.vscode + # debug npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/starters/basic-starter/.nvmrc b/starters/basic-starter/.nvmrc new file mode 100644 index 00000000..9a2a0e21 --- /dev/null +++ b/starters/basic-starter/.nvmrc @@ -0,0 +1 @@ +v20 diff --git a/starters/basic-starter/.prettierignore b/starters/basic-starter/.prettierignore new file mode 100644 index 00000000..03c8a68b --- /dev/null +++ b/starters/basic-starter/.prettierignore @@ -0,0 +1,18 @@ +# Ignore everything. +/* + +# Format most files in the root directory. +!/*.js +!/*.ts +!/*.md +!/*.json +# But ignore some. +/package.json +/package-lock.json +/CHANGELOG.md + +# Don't ignore these nested directories. +!/app +!/components +!/lib +!/pages diff --git a/starters/basic-starter/.prettierrc.json b/starters/basic-starter/.prettierrc.json new file mode 100644 index 00000000..3c60a7b5 --- /dev/null +++ b/starters/basic-starter/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "semi": false, + "trailingComma": "es5" +} diff --git a/starters/graphql-starter/components/layout.tsx b/starters/basic-starter/components/Layout.tsx similarity index 81% rename from starters/graphql-starter/components/layout.tsx rename to starters/basic-starter/components/Layout.tsx index ea7ce17e..672d0b48 100644 --- a/starters/graphql-starter/components/layout.tsx +++ b/starters/basic-starter/components/Layout.tsx @@ -1,8 +1,8 @@ import Link from "next/link" +import { PreviewAlert } from "@/components/PreviewAlert" +import type { ReactNode } from "react" -import { PreviewAlert } from "components/preview-alert" - -export function Layout({ children }) { +export function Layout({ children }: { children: ReactNode }) { return ( <> diff --git a/starters/basic-starter/components/PreviewAlert.tsx b/starters/basic-starter/components/PreviewAlert.tsx new file mode 100644 index 00000000..abca6a68 --- /dev/null +++ b/starters/basic-starter/components/PreviewAlert.tsx @@ -0,0 +1,30 @@ +import { useEffect, useState } from "react" +import { useRouter } from "next/router" + +export function PreviewAlert() { + const router = useRouter() + const isPreview = router.isPreview + const [showPreviewAlert, setShowPreviewAlert] = useState(false) + + useEffect(() => { + setShowPreviewAlert(isPreview && window.top === window.self) + }, [isPreview]) + + if (!showPreviewAlert) { + return null + } + + return ( +
+

+ This page is a preview.{" "} + +

+
+ ) +} diff --git a/starters/basic-starter/components/drupal/Article.tsx b/starters/basic-starter/components/drupal/Article.tsx new file mode 100644 index 00000000..b4d3d234 --- /dev/null +++ b/starters/basic-starter/components/drupal/Article.tsx @@ -0,0 +1,46 @@ +import Image from "next/image" +import { absoluteUrl, formatDate } from "@/lib/utils" +import type { DrupalNode } from "next-drupal" + +interface ArticleProps { + node: DrupalNode +} + +export function Article({ node, ...props }: ArticleProps) { + return ( +
+

{node.title}

+
+ {node.uid?.display_name ? ( + + Posted by{" "} + {node.uid?.display_name} + + ) : null} + - {formatDate(node.created)} +
+ {node.field_image && ( +
+ {node.field_image.resourceIdObjMeta.alt + {node.field_image.resourceIdObjMeta.title && ( +
+ {node.field_image.resourceIdObjMeta.title} +
+ )} +
+ )} + {node.body?.processed && ( +
+ )} +
+ ) +} diff --git a/starters/basic-starter/components/node--article--teaser.tsx b/starters/basic-starter/components/drupal/ArticleTeaser.tsx similarity index 86% rename from starters/basic-starter/components/node--article--teaser.tsx rename to starters/basic-starter/components/drupal/ArticleTeaser.tsx index 1dbff4bb..4909b4a1 100644 --- a/starters/basic-starter/components/node--article--teaser.tsx +++ b/starters/basic-starter/components/drupal/ArticleTeaser.tsx @@ -1,14 +1,13 @@ import Image from "next/image" import Link from "next/link" -import { DrupalNode } from "next-drupal" +import { absoluteUrl, formatDate } from "@/lib/utils" +import type { DrupalNode } from "next-drupal" -import { absoluteUrl, formatDate } from "lib/utils" - -interface NodeArticleTeaserProps { +interface ArticleTeaserProps { node: DrupalNode } -export function NodeArticleTeaser({ node, ...props }: NodeArticleTeaserProps) { +export function ArticleTeaser({ node, ...props }: ArticleTeaserProps) { return (
diff --git a/starters/basic-starter/components/drupal/BasicPage.tsx b/starters/basic-starter/components/drupal/BasicPage.tsx new file mode 100644 index 00000000..88d7f00b --- /dev/null +++ b/starters/basic-starter/components/drupal/BasicPage.tsx @@ -0,0 +1,19 @@ +import type { DrupalNode } from "next-drupal" + +interface BasicPageProps { + node: DrupalNode +} + +export function BasicPage({ node, ...props }: BasicPageProps) { + return ( +
+

{node.title}

+ {node.body?.processed && ( +
+ )} +
+ ) +} diff --git a/starters/basic-starter/components/preview-alert.tsx b/starters/basic-starter/components/preview-alert.tsx deleted file mode 100644 index 54c38803..00000000 --- a/starters/basic-starter/components/preview-alert.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from "react" -import { useRouter } from "next/router" - -export function PreviewAlert() { - const { isPreview } = useRouter() - const [showPreviewAlert, setShowPreviewAlert] = React.useState(false) - - React.useEffect(() => { - setShowPreviewAlert(isPreview && window.top === window.self) - }, [isPreview]) - - if (!showPreviewAlert) { - return null - } - - return ( -
-

- This page is a preview.{" "} - {/* eslint-disable @next/next/no-html-link-for-pages */} - - Click here - {" "} - to exit preview mode. -

-
- ) -} diff --git a/starters/basic-starter/lib/drupal.ts b/starters/basic-starter/lib/drupal.ts index c35a0b40..64444951 100644 --- a/starters/basic-starter/lib/drupal.ts +++ b/starters/basic-starter/lib/drupal.ts @@ -1,8 +1,14 @@ import { DrupalClient } from "next-drupal" -export const drupal = new DrupalClient( - process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, - { - previewSecret: process.env.DRUPAL_PREVIEW_SECRET, - } -) +const baseUrl: string = process.env.NEXT_PUBLIC_DRUPAL_BASE_URL || "" +const clientId = process.env.DRUPAL_CLIENT_ID || "" +const clientSecret = process.env.DRUPAL_CLIENT_SECRET || "" +const previewSecret = process.env.DRUPAL_PREVIEW_SECRET + +export const drupal = new DrupalClient(baseUrl, { + auth: { + clientId, + clientSecret, + }, + previewSecret, +}) diff --git a/starters/basic-starter/next-env.d.ts b/starters/basic-starter/next-env.d.ts deleted file mode 100644 index 4f11a03d..00000000 --- a/starters/basic-starter/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/starters/basic-starter/next.config.js b/starters/basic-starter/next.config.js index d671944a..0a7fabac 100644 --- a/starters/basic-starter/next.config.js +++ b/starters/basic-starter/next.config.js @@ -1,7 +1,15 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + reactStrictMode: true, images: { - domains: [process.env.NEXT_IMAGE_DOMAIN], + remotePatterns: [ + { + // protocol: 'https', + hostname: process.env.NEXT_IMAGE_DOMAIN, + // port: '', + // pathname: '/sites/default/files/**', + }, + ], }, } diff --git a/starters/basic-starter/package.json b/starters/basic-starter/package.json index 76f176d5..51b3ed0e 100644 --- a/starters/basic-starter/package.json +++ b/starters/basic-starter/package.json @@ -1,6 +1,6 @@ { "name": "basic-starter", - "version": "1.8.0", + "version": "2.0.0-alpha.0", "private": true, "license": "MIT", "scripts": { @@ -8,25 +8,27 @@ "build": "next build", "start": "next start", "preview": "next build && next start", - "lint": "next lint" + "lint": "next lint", + "format": "prettier --write .", + "format:check": "prettier --check ." }, "dependencies": { - "@tailwindcss/typography": "^0.5.8", - "next": "^13", - "next-drupal": "^1.6.0", + "next": "^14", + "next-drupal": "^2.0.0-alpha.0", "react": "^18.2.0", - "react-dom": "^18.2.0", - "sharp": "^0.31.2" + "react-dom": "^18.2.0" }, "devDependencies": { - "@types/node": "^18.11.10", - "@types/react": "^18.0.26", - "@types/react-dom": "^18.0.9", - "autoprefixer": "^10.4.13", - "eslint": "^8.28.0", - "eslint-config-next": "^13.0.6", - "postcss": "^8.4.19", - "tailwindcss": "^3.2.4", - "typescript": "^4.9.3" + "@tailwindcss/typography": "^0.5.10", + "@types/node": "^20.10.0", + "@types/react": "^18.2.39", + "@types/react-dom": "^18.2.17", + "autoprefixer": "^10.4.16", + "eslint": "^8.54.0", + "eslint-config-next": "^14.0.3", + "postcss": "^8.4.31", + "prettier": "^3.1.0", + "tailwindcss": "^3.3.5", + "typescript": "^5.3.2" } } diff --git a/starters/basic-starter/pages/[...slug].tsx b/starters/basic-starter/pages/[...slug].tsx index fad33a9e..9894d5f0 100644 --- a/starters/basic-starter/pages/[...slug].tsx +++ b/starters/basic-starter/pages/[...slug].tsx @@ -1,43 +1,25 @@ -import { GetStaticPathsResult, GetStaticPropsResult } from "next" import Head from "next/head" -import { DrupalNode } from "next-drupal" - -import { drupal } from "lib/drupal" -import { NodeArticle } from "components/node--article" -import { NodeBasicPage } from "components/node--basic-page" -import { Layout } from "components/layout" +import { Article } from "@/components/drupal/Article" +import { BasicPage } from "@/components/drupal/BasicPage" +import { Layout } from "@/components/Layout" +import { drupal } from "@/lib/drupal" +import type { + GetStaticPaths, + GetStaticProps, + InferGetStaticPropsType, +} from "next" +import type { DrupalNode } from "next-drupal" const RESOURCE_TYPES = ["node--page", "node--article"] -interface NodePageProps { - resource: DrupalNode -} - -export default function NodePage({ resource }: NodePageProps) { - if (!resource) return null - - return ( - - - {resource.title} - - - {resource.type === "node--page" && } - {resource.type === "node--article" && } - - ) -} - -export async function getStaticPaths(context): Promise { +export const getStaticPaths = (async (context) => { return { paths: await drupal.getStaticPathsFromContext(RESOURCE_TYPES, context), fallback: "blocking", } -} +}) satisfies GetStaticPaths -export async function getStaticProps( - context -): Promise> { +export const getStaticProps = (async (context) => { const path = await drupal.translatePathFromContext(context) if (!path) { @@ -46,7 +28,7 @@ export async function getStaticProps( } } - const type = path.jsonapi.resourceName + const type = path?.jsonapi?.resourceName let params = {} if (type === "node--article") { @@ -68,7 +50,7 @@ export async function getStaticProps( // We throw an error to tell revalidation to skip this for now. // Revalidation can try again on next request. if (!resource) { - throw new Error(`Failed to fetch resource: ${path.jsonapi.individual}`) + throw new Error(`Failed to fetch resource: ${path?.jsonapi?.individual}`) } // If we're not in preview mode and the resource is not published, @@ -84,4 +66,27 @@ export async function getStaticProps( resource, }, } +}) satisfies GetStaticProps<{ + resource: DrupalNode +}> + +export default function NodePage({ + resource, +}: InferGetStaticPropsType) { + if (!resource) return null + + return ( + + + {resource.title} + + + {resource.type === "node--page" && } + {resource.type === "node--article" &&
} + + ) } diff --git a/starters/basic-starter/pages/_app.tsx b/starters/basic-starter/pages/_app.tsx index 1c9392b0..70739e9b 100644 --- a/starters/basic-starter/pages/_app.tsx +++ b/starters/basic-starter/pages/_app.tsx @@ -1,6 +1,5 @@ -import { AppProps } from "next/app" - -import "styles/globals.css" +import "@/styles/globals.css" +import type { AppProps } from "next/app" export default function App({ Component, pageProps }: AppProps) { return diff --git a/starters/basic-starter/pages/_document.tsx b/starters/basic-starter/pages/_document.tsx new file mode 100644 index 00000000..097cb7ff --- /dev/null +++ b/starters/basic-starter/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from "next/document" + +export default function Document() { + return ( + + + +
+ + + + ) +} diff --git a/starters/basic-starter/pages/api/exit-preview.ts b/starters/basic-starter/pages/api/exit-preview.ts index cf3ba903..a8cf12e8 100644 --- a/starters/basic-starter/pages/api/exit-preview.ts +++ b/starters/basic-starter/pages/api/exit-preview.ts @@ -1,6 +1,9 @@ -import { NextApiResponse } from "next" +import type { NextApiRequest, NextApiResponse } from "next" -export default async function exit(_, response: NextApiResponse) { +export default async function exit( + _: NextApiRequest, + response: NextApiResponse +) { response.clearPreviewData() response.writeHead(307, { Location: "/" }) response.end() diff --git a/starters/basic-starter/pages/api/preview.ts b/starters/basic-starter/pages/api/preview.ts index 9581ed10..7660eb64 100644 --- a/starters/basic-starter/pages/api/preview.ts +++ b/starters/basic-starter/pages/api/preview.ts @@ -1,10 +1,9 @@ -import { NextApiRequest, NextApiResponse } from "next" - -import { drupal } from "lib/drupal" +import { drupal } from "@/lib/drupal" +import type { NextApiRequest, NextApiResponse } from "next" export default async function handler( request: NextApiRequest, response: NextApiResponse ) { - return await drupal.preview(request, response) + await drupal.preview(request, response) } diff --git a/starters/basic-starter/pages/api/revalidate.ts b/starters/basic-starter/pages/api/revalidate.ts index 38dea1c6..cf90a0d4 100644 --- a/starters/basic-starter/pages/api/revalidate.ts +++ b/starters/basic-starter/pages/api/revalidate.ts @@ -1,4 +1,4 @@ -import { NextApiRequest, NextApiResponse } from "next" +import type { NextApiRequest, NextApiResponse } from "next" export default async function handler( request: NextApiRequest, @@ -23,7 +23,7 @@ export default async function handler( return response.json({}) } catch (error) { return response.status(404).json({ - message: error.message, + message: (error as Error).message, }) } } diff --git a/starters/basic-starter/pages/index.tsx b/starters/basic-starter/pages/index.tsx index 3c424387..e5963b98 100644 --- a/starters/basic-starter/pages/index.tsx +++ b/starters/basic-starter/pages/index.tsx @@ -1,45 +1,11 @@ import Head from "next/head" -import { GetStaticPropsResult } from "next" -import { DrupalNode } from "next-drupal" +import { ArticleTeaser } from "@/components/drupal/ArticleTeaser" +import { Layout } from "@/components/Layout" +import { drupal } from "@/lib/drupal" +import type { InferGetStaticPropsType, GetStaticProps } from "next" +import type { DrupalNode } from "next-drupal" -import { drupal } from "lib/drupal" -import { Layout } from "components/layout" -import { NodeArticleTeaser } from "components/node--article--teaser" - -interface IndexPageProps { - nodes: DrupalNode[] -} - -export default function IndexPage({ nodes }: IndexPageProps) { - return ( - - - Next.js for Drupal - - -
-

Latest Articles.

- {nodes?.length ? ( - nodes.map((node) => ( -
- -
-
- )) - ) : ( -

No nodes found

- )} -
-
- ) -} - -export async function getStaticProps( - context -): Promise> { +export const getStaticProps = (async (context) => { const nodes = await drupal.getResourceCollectionFromContext( "node--article", context, @@ -58,4 +24,34 @@ export async function getStaticProps( nodes, }, } +}) satisfies GetStaticProps<{ + nodes: DrupalNode[] +}> + +export default function Home({ + nodes, +}: InferGetStaticPropsType) { + return ( + + + Next.js for Drupal + + +

Latest Articles.

+ {nodes?.length ? ( + nodes.map((node) => ( +
+ +
+
+ )) + ) : ( +

No nodes found

+ )} +
+ ) } diff --git a/starters/basic-starter/tailwind.config.js b/starters/basic-starter/tailwind.config.js deleted file mode 100644 index 81060f34..00000000 --- a/starters/basic-starter/tailwind.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - mode: "jit", - content: [ - "./pages/**/*.{js,ts,jsx,tsx}", - "./components/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - variants: { - extend: {}, - }, - plugins: [require("@tailwindcss/typography")], -} diff --git a/starters/basic-starter/tailwind.config.ts b/starters/basic-starter/tailwind.config.ts new file mode 100644 index 00000000..c7f5c8a1 --- /dev/null +++ b/starters/basic-starter/tailwind.config.ts @@ -0,0 +1,18 @@ +import type { Config } from "tailwindcss" + +const config: Config = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: {}, + }, + variants: { + extend: {}, + }, + plugins: [require("@tailwindcss/typography")], +} + +export default config diff --git a/starters/basic-starter/tsconfig.json b/starters/basic-starter/tsconfig.json index f2303bdd..ad54f56d 100644 --- a/starters/basic-starter/tsconfig.json +++ b/starters/basic-starter/tsconfig.json @@ -4,17 +4,19 @@ "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, - "strict": false, + "strict": true, "forceConsistentCasingInFileNames": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", - "baseUrl": "./", - "incremental": true + "incremental": true, + "paths": { + "@/*": ["./*"] + } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] diff --git a/starters/basic-starter/yarn.lock b/starters/basic-starter/yarn.lock deleted file mode 100644 index ce8d69e7..00000000 --- a/starters/basic-starter/yarn.lock +++ /dev/null @@ -1,2180 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/runtime-corejs3@^7.10.2": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz#1e25de4fa994c57c18e5fdda6cc810dac70f5590" - integrity sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ== - dependencies: - core-js-pure "^3.19.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@next/env@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.4.tgz#5af629b43075281ecd7f87938802b7cf5b67e94b" - integrity sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg== - -"@next/eslint-plugin-next@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.4.tgz#9c52637af8eecab24dac3f2e5098376f6fc2dff4" - integrity sha512-BRy565KVK6Cdy8LHaHTiwctLqBu/RT84RLpESug70BDJzBlV8QBvODyx/j7wGhvYqp9kvstM05lyb6JaTkSCcQ== - dependencies: - glob "7.1.7" - -"@next/swc-android-arm-eabi@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz#c3dae178b7c15ad627d2e9b8dfb38caecb5c4ac7" - integrity sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw== - -"@next/swc-android-arm64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz#f320d60639e19ecffa1f9034829f2d95502a9a51" - integrity sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw== - -"@next/swc-darwin-arm64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz#fd578278312613eddcf3aee26910100509941b63" - integrity sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ== - -"@next/swc-darwin-x64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz#ace5f80d8c8348efe194f6d7074c6213c52b3944" - integrity sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA== - -"@next/swc-linux-arm-gnueabihf@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz#2bf2c83863635f19c71c226a2df936e001cce29c" - integrity sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg== - -"@next/swc-linux-arm64-gnu@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz#d577190f641c9b4b463719dd6b8953b6ba9be8d9" - integrity sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g== - -"@next/swc-linux-arm64-musl@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz#e70ffe70393d8f9242deecdb282ce5a8fd588b14" - integrity sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA== - -"@next/swc-linux-x64-gnu@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz#91498a130387fb1961902f2bee55863f8e910cff" - integrity sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA== - -"@next/swc-linux-x64-musl@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz#78057b03c148c121553d41521ad38f6c732762ff" - integrity sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA== - -"@next/swc-win32-arm64-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz#05bbaabacac23b8edf6caa99eb86b17550a09051" - integrity sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg== - -"@next/swc-win32-ia32-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz#8fd2fb48f04a2802e51fc320878bf6b411c1c866" - integrity sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g== - -"@next/swc-win32-x64-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz#a72ed44c9b1f850986a30fe36c59e01f8a79b5f3" - integrity sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ== - -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== - dependencies: - "@nodelib/fs.stat" "2.0.4" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== - dependencies: - "@nodelib/fs.scandir" "2.1.4" - fastq "^1.6.0" - -"@rushstack/eslint-patch@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64" - integrity sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw== - -"@tailwindcss/typography@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.2.tgz#24b069dab24d7a2467d01aca0dd432cb4b29f0ee" - integrity sha512-coq8DBABRPFcVhVIk6IbKyyHUt7YTEC/C992tatFB+yEx5WGBQrCgsSFjxHUr8AWXphWckadVJbominEduYBqw== - dependencies: - lodash.castarray "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.merge "^4.6.2" - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/node@^17.0.23": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/react@^17.0.43": - version "17.0.44" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" - integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.1" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" - integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== - -"@typescript-eslint/parser@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd" - integrity sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA== - dependencies: - "@typescript-eslint/scope-manager" "5.10.1" - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/typescript-estree" "5.10.1" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809" - integrity sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg== - dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" - -"@typescript-eslint/types@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea" - integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q== - -"@typescript-eslint/typescript-estree@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15" - integrity sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ== - dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b" - integrity sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ== - dependencies: - "@typescript-eslint/types" "5.10.1" - eslint-visitor-keys "^3.0.0" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-node@^1.6.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -array-includes@^3.1.3, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -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== - dependencies: - browserslist "^4.20.2" - caniuse-lite "^1.0.30001317" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -axe-core@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" - integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.20.2: - version "4.20.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" - integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== - dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" - escalade "^3.1.1" - node-releases "^2.0.2" - picocolors "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -caniuse-lite@^1.0.30001283, caniuse-lite@^1.0.30001317: - version "1.0.30001327" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz#c1546d7d7bb66506f0ccdad6a7d07fc6d668c858" - integrity sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -clone@2.x: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.1.4, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -core-js-pure@^3.19.0: - version "3.19.3" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.19.3.tgz#c69b2b36b58927317824994b532ec3f0f7e49607" - integrity sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA== - -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -damerau-levenshtein@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.84: - version "1.4.106" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz#e7a3bfa9d745dd9b9e597616cb17283cc349781a" - integrity sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-next@^12.1.4: - version "12.1.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.4.tgz#939ea2ff33034763300bf1e62482cea91212d274" - integrity sha512-Uj0jrVjoQbg9qerxRjSHoOOv3PEzoZxpb8G9LYct25fsflP8xIiUq0l4WEu2KSB5owuLv5hie7wSMqPEsHj+bQ== - dependencies: - "@next/eslint-plugin-next" "12.1.4" - "@rushstack/eslint-patch" "1.0.8" - "@typescript-eslint/parser" "5.10.1" - eslint-import-resolver-node "0.3.4" - eslint-import-resolver-typescript "2.4.0" - eslint-plugin-import "2.25.2" - eslint-plugin-jsx-a11y "6.5.1" - eslint-plugin-react "7.29.1" - eslint-plugin-react-hooks "4.3.0" - -eslint-import-resolver-node@0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-typescript@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz#ec1e7063ebe807f0362a7320543aaed6fe1100e1" - integrity sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA== - dependencies: - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-module-utils@^2.7.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-import@2.25.2: - version "2.25.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9" - integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.0" - has "^1.0.3" - is-core-module "^2.7.0" - is-glob "^4.0.3" - minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-jsx-a11y@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== - dependencies: - "@babel/runtime" "^7.16.3" - aria-query "^4.2.2" - array-includes "^3.1.4" - ast-types-flow "^0.0.7" - axe-core "^4.3.5" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.2.1" - language-tags "^1.0.5" - minimatch "^3.0.4" - -eslint-plugin-react-hooks@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" - integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== - -eslint-plugin-react@7.29.1: - version "7.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.1.tgz#6c40bc83142bb63d132a1b3565e2ea655411f800" - integrity sha512-WtzRpHMhsOX05ZrkyaaqmLl2uXGqmYooCfBxftJKlkYdsltiufGgfU7uuoHwR2lBam2Kh/EIVID4aU9e3kbCMA== - dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.0" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.6" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e" - integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q== - dependencies: - "@eslint/eslintrc" "^1.2.1" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== - dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.4: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-callable@^1.1.4: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" - integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== - dependencies: - has "^1.0.3" - -is-core-module@^2.7.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-glob@^4.0.0, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsona@^1.8.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/jsona/-/jsona-1.9.2.tgz#6da69c7fe5846166b98a5b6d967cdbcfd781b044" - integrity sha512-+af2mw8JbVUBNVFymWhovX8OV02xBKYTt8oST4HOmyfrLMfdWpatSrhvdldUTTcByzbWb4tgPbaZXaAV5yAbfg== - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.castarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" - integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.1.30: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" - integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== - -nanoid@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" - integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -next-drupal@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/next-drupal/-/next-drupal-1.2.1.tgz#e5a6ae347d1bfb95c19b9b87c5acb3f38ed69def" - integrity sha512-XG/WajhlMyeLnwKHhIBhIxp7kPUgFkGqHuhOj4KWUIuTeunrMeWS85YGrsz/bPnfJDduA6Njo3ZzUj7pauQLJQ== - dependencies: - jsona "^1.8.0" - node-cache "^5.1.2" - qs "^6.10.1" - -next@^12.1.4: - version "12.1.4" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.4.tgz#597a9bdec7aec778b442c4f6d41afd2c64a54b23" - integrity sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ== - dependencies: - "@next/env" "12.1.4" - caniuse-lite "^1.0.30001283" - postcss "8.4.5" - styled-jsx "5.0.1" - optionalDependencies: - "@next/swc-android-arm-eabi" "12.1.4" - "@next/swc-android-arm64" "12.1.4" - "@next/swc-darwin-arm64" "12.1.4" - "@next/swc-darwin-x64" "12.1.4" - "@next/swc-linux-arm-gnueabihf" "12.1.4" - "@next/swc-linux-arm64-gnu" "12.1.4" - "@next/swc-linux-arm64-musl" "12.1.4" - "@next/swc-linux-x64-gnu" "12.1.4" - "@next/swc-linux-x64-musl" "12.1.4" - "@next/swc-win32-arm64-msvc" "12.1.4" - "@next/swc-win32-ia32-msvc" "12.1.4" - "@next/swc-win32-x64-msvc" "12.1.4" - -node-cache@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== - dependencies: - clone "2.x" - -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-hash@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - -object-inspect@^1.11.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b" - integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== - -object-inspect@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" - integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - -postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.0.tgz#d39c47091c4aec37f50272373a6a648ef5e97829" - integrity sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== - dependencies: - import-cwd "^3.0.0" - lilconfig "^2.0.3" - yaml "^1.10.2" - -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== - dependencies: - postcss-selector-parser "^6.0.6" - -postcss-selector-parser@^6.0.6: - version "6.0.7" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc" - integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@8.4.5: - version "8.4.5" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" - integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== - dependencies: - nanoid "^3.1.30" - picocolors "^1.0.0" - source-map-js "^1.0.1" - -postcss@^8.4.12, postcss@^8.4.6: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== - dependencies: - nanoid "^3.3.1" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@^6.10.1: - version "6.10.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.2.tgz#c1431bea37fc5b24c5bdbafa20f16bdf2a4b9ffe" - integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.13.1, resolve@^1.17.0, resolve@^1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-js@^1.0.1: - 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: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -string.prototype.matchall@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -styled-jsx@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.1.tgz#78fecbbad2bf95ce6cd981a08918ce4696f5fc80" - integrity sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tailwindcss@^3.0.23: - version "3.0.23" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.23.tgz#c620521d53a289650872a66adfcb4129d2200d10" - integrity sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA== - dependencies: - arg "^5.0.1" - chalk "^4.1.2" - chokidar "^3.5.3" - color-name "^1.1.4" - cosmiconfig "^7.0.1" - detective "^5.2.0" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.11" - glob-parent "^6.0.2" - is-glob "^4.0.3" - normalize-path "^3.0.0" - object-hash "^2.2.0" - postcss "^8.4.6" - postcss-js "^4.0.0" - postcss-load-config "^3.1.0" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" - integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== diff --git a/starters/graphql-starter/.env.example b/starters/graphql-starter/.env.example index f4e26b94..f0a9bcf3 100644 --- a/starters/graphql-starter/.env.example +++ b/starters/graphql-starter/.env.example @@ -1,10 +1,15 @@ # See https://next-drupal.org/docs/environment-variables -NEXT_PUBLIC_DRUPAL_BASE_URL=https://dev.next-drupal.org -NEXT_IMAGE_DOMAIN=dev.next-drupal.org + +# Required +NEXT_PUBLIC_DRUPAL_BASE_URL=https://site.example.com +NEXT_IMAGE_DOMAIN=site.example.com # Authentication -DRUPAL_CLIENT_ID= -DRUPAL_CLIENT_SECRET= +DRUPAL_CLIENT_ID=Retrieve this from /admin/config/services/consumer +DRUPAL_CLIENT_SECRET=Retrieve this from /admin/config/services/consumer + +# Required for Preview Mode +DRUPAL_PREVIEW_SECRET=Retrieve this from /admin/config/services/next # Required for On-demand Revalidation -DRUPAL_REVALIDATE_SECRET=secret \ No newline at end of file +DRUPAL_REVALIDATE_SECRET=Retrieve this from /admin/config/services/next diff --git a/starters/graphql-starter/.eslintrc.json b/starters/graphql-starter/.eslintrc.json index abd5579b..7c1a3add 100644 --- a/starters/graphql-starter/.eslintrc.json +++ b/starters/graphql-starter/.eslintrc.json @@ -1,4 +1,4 @@ { - "extends": "next", + "extends": "next/core-web-vitals", "root": true } diff --git a/starters/graphql-starter/.gitignore b/starters/graphql-starter/.gitignore index 78adc9ed..83ec79b6 100644 --- a/starters/graphql-starter/.gitignore +++ b/starters/graphql-starter/.gitignore @@ -4,14 +4,15 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage # next.js /.next/ /out/ -.next # production /build @@ -20,19 +21,21 @@ .DS_Store *.pem +# IDE files +/.idea +/.vscode + # debug npm-debug.log* yarn-debug.log* yarn-error.log* -lerna-debug.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel -/certificates/* \ No newline at end of file +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/starters/graphql-starter/.nvmrc b/starters/graphql-starter/.nvmrc new file mode 100644 index 00000000..9a2a0e21 --- /dev/null +++ b/starters/graphql-starter/.nvmrc @@ -0,0 +1 @@ +v20 diff --git a/starters/graphql-starter/.prettierignore b/starters/graphql-starter/.prettierignore new file mode 100644 index 00000000..03c8a68b --- /dev/null +++ b/starters/graphql-starter/.prettierignore @@ -0,0 +1,18 @@ +# Ignore everything. +/* + +# Format most files in the root directory. +!/*.js +!/*.ts +!/*.md +!/*.json +# But ignore some. +/package.json +/package-lock.json +/CHANGELOG.md + +# Don't ignore these nested directories. +!/app +!/components +!/lib +!/pages diff --git a/starters/graphql-starter/.prettierrc.json b/starters/graphql-starter/.prettierrc.json new file mode 100644 index 00000000..3c60a7b5 --- /dev/null +++ b/starters/graphql-starter/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "semi": false, + "trailingComma": "es5" +} diff --git a/starters/basic-starter/components/layout.tsx b/starters/graphql-starter/components/Layout.tsx similarity index 81% rename from starters/basic-starter/components/layout.tsx rename to starters/graphql-starter/components/Layout.tsx index ea7ce17e..672d0b48 100644 --- a/starters/basic-starter/components/layout.tsx +++ b/starters/graphql-starter/components/Layout.tsx @@ -1,8 +1,8 @@ import Link from "next/link" +import { PreviewAlert } from "@/components/PreviewAlert" +import type { ReactNode } from "react" -import { PreviewAlert } from "components/preview-alert" - -export function Layout({ children }) { +export function Layout({ children }: { children: ReactNode }) { return ( <> diff --git a/starters/graphql-starter/components/PreviewAlert.tsx b/starters/graphql-starter/components/PreviewAlert.tsx new file mode 100644 index 00000000..abca6a68 --- /dev/null +++ b/starters/graphql-starter/components/PreviewAlert.tsx @@ -0,0 +1,30 @@ +import { useEffect, useState } from "react" +import { useRouter } from "next/router" + +export function PreviewAlert() { + const router = useRouter() + const isPreview = router.isPreview + const [showPreviewAlert, setShowPreviewAlert] = useState(false) + + useEffect(() => { + setShowPreviewAlert(isPreview && window.top === window.self) + }, [isPreview]) + + if (!showPreviewAlert) { + return null + } + + return ( +
+

+ This page is a preview.{" "} + +

+
+ ) +} diff --git a/starters/graphql-starter/components/node--article.tsx b/starters/graphql-starter/components/drupal/Article.tsx similarity index 68% rename from starters/graphql-starter/components/node--article.tsx rename to starters/graphql-starter/components/drupal/Article.tsx index fba58340..2e9a05a3 100644 --- a/starters/graphql-starter/components/node--article.tsx +++ b/starters/graphql-starter/components/drupal/Article.tsx @@ -1,13 +1,12 @@ import Image from "next/image" +import { formatDate } from "@/lib/utils" +import type { NodeArticle } from "@/types" -import { formatDate } from "lib/utils" -import { Article } from "types" - -interface NodeArticleProps { - node: Article +interface ArticleProps { + node: NodeArticle } -export function NodeArticle({ node, ...props }: NodeArticleProps) { +export function Article({ node, ...props }: ArticleProps) { return (

{node.title}

@@ -21,18 +20,19 @@ export function NodeArticle({ node, ...props }: NodeArticleProps) { - {formatDate(node.created)} {node.image && ( -
+
{node.title}
)} {node.body?.processed && (
)} diff --git a/starters/graphql-starter/components/node--article--teaser.tsx b/starters/graphql-starter/components/drupal/ArticleTeaser.tsx similarity index 66% rename from starters/graphql-starter/components/node--article--teaser.tsx rename to starters/graphql-starter/components/drupal/ArticleTeaser.tsx index ac3baf86..ed88aca0 100644 --- a/starters/graphql-starter/components/node--article--teaser.tsx +++ b/starters/graphql-starter/components/drupal/ArticleTeaser.tsx @@ -1,17 +1,16 @@ import Image from "next/image" import Link from "next/link" +import { formatDate } from "@/lib/utils" +import type { NodeArticle } from "@/types" -import { formatDate } from "lib/utils" -import { Article } from "types" - -interface NodeArticleTeaserProps { - node: Partial
+interface ArticleTeaserProps { + node: Partial } -export function NodeArticleTeaser({ node, ...props }: NodeArticleTeaserProps) { +export function ArticleTeaser({ node, ...props }: ArticleTeaserProps) { return (
- +

{node.title}

@@ -21,20 +20,15 @@ export function NodeArticleTeaser({ node, ...props }: NodeArticleTeaserProps) { {node.author.displayName} ) : null} - - {formatDate(node.created)} + {node.created && - {formatDate(node.created)}}
{node.image && (
- {node.title} +
)} Read article diff --git a/starters/graphql-starter/components/node--basic-page.tsx b/starters/graphql-starter/components/drupal/BasicPage.tsx similarity index 69% rename from starters/graphql-starter/components/node--basic-page.tsx rename to starters/graphql-starter/components/drupal/BasicPage.tsx index d40139d2..b4bc2ed6 100644 --- a/starters/graphql-starter/components/node--basic-page.tsx +++ b/starters/graphql-starter/components/drupal/BasicPage.tsx @@ -1,10 +1,10 @@ -import { Page } from "types" +import type { NodePage } from "@/types" -interface NodeBasicPageProps { - node: Page +interface BasicPageProps { + node: NodePage } -export function NodeBasicPage({ node, ...props }: NodeBasicPageProps) { +export function BasicPage({ node, ...props }: BasicPageProps) { return (

{node.title}

diff --git a/starters/graphql-starter/components/preview-alert.tsx b/starters/graphql-starter/components/preview-alert.tsx deleted file mode 100644 index 54c38803..00000000 --- a/starters/graphql-starter/components/preview-alert.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from "react" -import { useRouter } from "next/router" - -export function PreviewAlert() { - const { isPreview } = useRouter() - const [showPreviewAlert, setShowPreviewAlert] = React.useState(false) - - React.useEffect(() => { - setShowPreviewAlert(isPreview && window.top === window.self) - }, [isPreview]) - - if (!showPreviewAlert) { - return null - } - - return ( -
-

- This page is a preview.{" "} - {/* eslint-disable @next/next/no-html-link-for-pages */} - - Click here - {" "} - to exit preview mode. -

-
- ) -} diff --git a/starters/graphql-starter/lib/drupal.ts b/starters/graphql-starter/lib/drupal.ts index 0fe2765c..f191e1b3 100644 --- a/starters/graphql-starter/lib/drupal.ts +++ b/starters/graphql-starter/lib/drupal.ts @@ -1,15 +1,17 @@ import { DrupalClient } from "next-drupal" -export const drupal = new DrupalClient( - process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, - { - previewSecret: process.env.DRUPAL_PREVIEW_SECRET, - auth: { - clientId: process.env.DRUPAL_CLIENT_ID, - clientSecret: process.env.DRUPAL_CLIENT_SECRET, - }, - } -) +const baseUrl: string = process.env.NEXT_PUBLIC_DRUPAL_BASE_URL || "" +const clientId = process.env.DRUPAL_CLIENT_ID || "" +const clientSecret = process.env.DRUPAL_CLIENT_SECRET || "" +const previewSecret = process.env.DRUPAL_PREVIEW_SECRET + +export const drupal = new DrupalClient(baseUrl, { + auth: { + clientId, + clientSecret, + }, + previewSecret, +}) export const graphqlEndpoint = drupal.buildUrl("/graphql") @@ -30,6 +32,10 @@ export async function query(payload: QueryPayload) { method: "POST", body: JSON.stringify(payload), withAuth: true, // Make authenticated requests using OAuth. + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, }) if (!response?.ok) { diff --git a/starters/graphql-starter/next-env.d.ts b/starters/graphql-starter/next-env.d.ts deleted file mode 100644 index 4f11a03d..00000000 --- a/starters/graphql-starter/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/starters/graphql-starter/next.config.js b/starters/graphql-starter/next.config.js index d671944a..0a7fabac 100644 --- a/starters/graphql-starter/next.config.js +++ b/starters/graphql-starter/next.config.js @@ -1,7 +1,15 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + reactStrictMode: true, images: { - domains: [process.env.NEXT_IMAGE_DOMAIN], + remotePatterns: [ + { + // protocol: 'https', + hostname: process.env.NEXT_IMAGE_DOMAIN, + // port: '', + // pathname: '/sites/default/files/**', + }, + ], }, } diff --git a/starters/graphql-starter/package.json b/starters/graphql-starter/package.json index 91a49a9a..77b11cb7 100644 --- a/starters/graphql-starter/package.json +++ b/starters/graphql-starter/package.json @@ -1,6 +1,6 @@ { "name": "graphql-starter", - "version": "0.1.0", + "version": "2.0.0-alpha.0", "private": true, "license": "MIT", "scripts": { @@ -8,25 +8,27 @@ "build": "next build", "start": "next start", "preview": "next build && next start", - "lint": "next lint" + "lint": "next lint", + "format": "prettier --write .", + "format:check": "prettier --check ." }, "dependencies": { - "@tailwindcss/typography": "^0.5.8", - "next": "^13", - "next-drupal": "^1.6.0", + "next": "^14", + "next-drupal": "^2.0.0-alpha.0", "react": "^18.2.0", - "react-dom": "^18.2.0", - "sharp": "^0.31.2" + "react-dom": "^18.2.0" }, "devDependencies": { - "@types/node": "^18.11.10", - "@types/react": "^18.0.26", - "@types/react-dom": "^18.0.9", - "autoprefixer": "^10.4.13", - "eslint": "^8.28.0", - "eslint-config-next": "^13.0.6", - "postcss": "^8.4.19", - "tailwindcss": "^3.2.4", - "typescript": "^4.9.3" + "@tailwindcss/typography": "^0.5.10", + "@types/node": "^20.10.0", + "@types/react": "^18.2.39", + "@types/react-dom": "^18.2.17", + "autoprefixer": "^10.4.16", + "eslint": "^8.54.0", + "eslint-config-next": "^14.0.3", + "postcss": "^8.4.31", + "prettier": "^3.1.0", + "tailwindcss": "^3.3.5", + "typescript": "^5.3.2" } } diff --git a/starters/graphql-starter/pages/[...slug].tsx b/starters/graphql-starter/pages/[...slug].tsx index 7daa2a3e..80a20f16 100644 --- a/starters/graphql-starter/pages/[...slug].tsx +++ b/starters/graphql-starter/pages/[...slug].tsx @@ -1,34 +1,18 @@ -import { GetStaticPathsResult, GetStaticPropsResult } from "next" import Head from "next/head" +import { Article } from "@/components/drupal/Article" +import { BasicPage } from "@/components/drupal/BasicPage" +import { Layout } from "@/components/Layout" +import { drupal, query } from "@/lib/drupal" +import type { + GetStaticPaths, + GetStaticProps, + InferGetStaticPropsType, +} from "next" +import type { NodeArticle, NodePage, NodesPath } from "@/types" -import { Article, NodesPath, Page } from "types" -import { drupal, query } from "lib/drupal" -import { NodeArticle } from "components/node--article" -import { NodeBasicPage } from "components/node--basic-page" -import { Layout } from "components/layout" - -interface NodePageProps { - resource: Article | Page -} - -export default function NodePage({ resource }: NodePageProps) { - if (!resource) return null - - return ( - - - {resource.title} - - - {resource.__typename === "NodePage" && } - {resource.__typename === "NodeArticle" && } - - ) -} - -export async function getStaticPaths(context): Promise { +export const getStaticPaths = (async (context) => { // Fetch the paths for the first 50 articles and pages. - // We'll fallback to on-demand generation for the rest. + // We'll fall back to on-demand generation for the rest. const data = await query<{ nodeArticles: NodesPath nodePages: NodesPath @@ -49,20 +33,19 @@ export async function getStaticPaths(context): Promise { // Build static paths. const paths = drupal.buildStaticPathsParamsFromPaths( - [...data?.nodeArticles?.nodes, ...data?.nodePages?.nodes].map( - ({ path }) => path - ) + [ + ...(data?.nodeArticles?.nodes as []), + ...(data?.nodePages?.nodes as []), + ].map(({ path }) => path) ) return { paths, fallback: "blocking", } -} +}) satisfies GetStaticPaths -export async function getStaticProps( - context -): Promise> { +export const getStaticProps = (async (context) => { if (!context?.params?.slug) { return { notFound: true, @@ -70,7 +53,7 @@ export async function getStaticProps( } const data = await query<{ - nodeByPath: Article + nodeByPath: NodeArticle | NodePage }>({ query: `query ($path: String!){ nodeByPath(path: $path) { @@ -124,4 +107,27 @@ export async function getStaticProps( resource, }, } +}) satisfies GetStaticProps<{ + resource: NodeArticle | NodePage +}> + +export default function Page({ + resource, +}: InferGetStaticPropsType) { + if (!resource) return null + + return ( + + + {resource.title} + + + {resource.__typename === "NodePage" && } + {resource.__typename === "NodeArticle" &&
} + + ) } diff --git a/starters/graphql-starter/pages/_app.tsx b/starters/graphql-starter/pages/_app.tsx index 1c9392b0..70739e9b 100644 --- a/starters/graphql-starter/pages/_app.tsx +++ b/starters/graphql-starter/pages/_app.tsx @@ -1,6 +1,5 @@ -import { AppProps } from "next/app" - -import "styles/globals.css" +import "@/styles/globals.css" +import type { AppProps } from "next/app" export default function App({ Component, pageProps }: AppProps) { return diff --git a/starters/graphql-starter/pages/_document.tsx b/starters/graphql-starter/pages/_document.tsx new file mode 100644 index 00000000..097cb7ff --- /dev/null +++ b/starters/graphql-starter/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from "next/document" + +export default function Document() { + return ( + + + +
+ + + + ) +} diff --git a/starters/graphql-starter/pages/api/exit-preview.ts b/starters/graphql-starter/pages/api/exit-preview.ts index cf3ba903..a8cf12e8 100644 --- a/starters/graphql-starter/pages/api/exit-preview.ts +++ b/starters/graphql-starter/pages/api/exit-preview.ts @@ -1,6 +1,9 @@ -import { NextApiResponse } from "next" +import type { NextApiRequest, NextApiResponse } from "next" -export default async function exit(_, response: NextApiResponse) { +export default async function exit( + _: NextApiRequest, + response: NextApiResponse +) { response.clearPreviewData() response.writeHead(307, { Location: "/" }) response.end() diff --git a/starters/graphql-starter/pages/api/preview.ts b/starters/graphql-starter/pages/api/preview.ts index 9581ed10..7660eb64 100644 --- a/starters/graphql-starter/pages/api/preview.ts +++ b/starters/graphql-starter/pages/api/preview.ts @@ -1,10 +1,9 @@ -import { NextApiRequest, NextApiResponse } from "next" - -import { drupal } from "lib/drupal" +import { drupal } from "@/lib/drupal" +import type { NextApiRequest, NextApiResponse } from "next" export default async function handler( request: NextApiRequest, response: NextApiResponse ) { - return await drupal.preview(request, response) + await drupal.preview(request, response) } diff --git a/starters/graphql-starter/pages/api/revalidate.ts b/starters/graphql-starter/pages/api/revalidate.ts index 38dea1c6..cf90a0d4 100644 --- a/starters/graphql-starter/pages/api/revalidate.ts +++ b/starters/graphql-starter/pages/api/revalidate.ts @@ -1,4 +1,4 @@ -import { NextApiRequest, NextApiResponse } from "next" +import type { NextApiRequest, NextApiResponse } from "next" export default async function handler( request: NextApiRequest, @@ -23,7 +23,7 @@ export default async function handler( return response.json({}) } catch (error) { return response.status(404).json({ - message: error.message, + message: (error as Error).message, }) } } diff --git a/starters/graphql-starter/pages/index.tsx b/starters/graphql-starter/pages/index.tsx index bba9533f..c5c5bca6 100644 --- a/starters/graphql-starter/pages/index.tsx +++ b/starters/graphql-starter/pages/index.tsx @@ -1,49 +1,15 @@ import Head from "next/head" -import { GetStaticPropsResult } from "next" +import { ArticleTeaser } from "@/components/drupal/ArticleTeaser" +import { Layout } from "@/components/Layout" +import { query } from "@/lib/drupal" +import type { InferGetStaticPropsType, GetStaticProps } from "next" +import type { NodeArticle } from "@/types" -import { query } from "lib/drupal" -import { Layout } from "components/layout" -import { NodeArticleTeaser } from "components/node--article--teaser" -import { Article } from "types" - -interface IndexPageProps { - nodes: Article[] -} - -export default function IndexPage({ nodes }: IndexPageProps) { - return ( - - - Next.js for Drupal - - -
-

Latest Articles.

- {nodes?.length ? ( - nodes.map((node) => ( -
- -
-
- )) - ) : ( -

No nodes found

- )} -
-
- ) -} - -export async function getStaticProps( - context -): Promise> { +export const getStaticProps = (async (context) => { // Fetch the first 10 articles. const data = await query<{ nodeArticles: { - nodes: Article[] + nodes: NodeArticle[] } }>({ query: ` @@ -76,4 +42,34 @@ export async function getStaticProps( nodes: data?.nodeArticles?.nodes ?? [], }, } +}) satisfies GetStaticProps<{ + nodes: NodeArticle[] +}> + +export default function Home({ + nodes, +}: InferGetStaticPropsType) { + return ( + + + Next.js for Drupal + + +

Latest Articles.

+ {nodes?.length ? ( + nodes.map((node) => ( +
+ +
+
+ )) + ) : ( +

No nodes found

+ )} +
+ ) } diff --git a/starters/graphql-starter/tailwind.config.js b/starters/graphql-starter/tailwind.config.js deleted file mode 100644 index 81060f34..00000000 --- a/starters/graphql-starter/tailwind.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - mode: "jit", - content: [ - "./pages/**/*.{js,ts,jsx,tsx}", - "./components/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - variants: { - extend: {}, - }, - plugins: [require("@tailwindcss/typography")], -} diff --git a/starters/graphql-starter/tailwind.config.ts b/starters/graphql-starter/tailwind.config.ts new file mode 100644 index 00000000..c7f5c8a1 --- /dev/null +++ b/starters/graphql-starter/tailwind.config.ts @@ -0,0 +1,18 @@ +import type { Config } from "tailwindcss" + +const config: Config = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: {}, + }, + variants: { + extend: {}, + }, + plugins: [require("@tailwindcss/typography")], +} + +export default config diff --git a/starters/graphql-starter/tsconfig.json b/starters/graphql-starter/tsconfig.json index f2303bdd..ad54f56d 100644 --- a/starters/graphql-starter/tsconfig.json +++ b/starters/graphql-starter/tsconfig.json @@ -4,17 +4,19 @@ "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, - "strict": false, + "strict": true, "forceConsistentCasingInFileNames": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", - "baseUrl": "./", - "incremental": true + "incremental": true, + "paths": { + "@/*": ["./*"] + } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] diff --git a/starters/graphql-starter/types/index.d.ts b/starters/graphql-starter/types/index.d.ts index e2a7cca7..fc52cc6e 100644 --- a/starters/graphql-starter/types/index.d.ts +++ b/starters/graphql-starter/types/index.d.ts @@ -18,7 +18,7 @@ export type Author = { displayName: string } -export type Page = { +export type NodePage = { __typename: "NodePage" id: string status: boolean @@ -29,7 +29,7 @@ export type Page = { } } -export type Article = { +export type NodeArticle = { __typename: "NodeArticle" id: string status: boolean diff --git a/starters/graphql-starter/yarn.lock b/starters/graphql-starter/yarn.lock deleted file mode 100644 index ce8d69e7..00000000 --- a/starters/graphql-starter/yarn.lock +++ /dev/null @@ -1,2180 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/runtime-corejs3@^7.10.2": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz#1e25de4fa994c57c18e5fdda6cc810dac70f5590" - integrity sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ== - dependencies: - core-js-pure "^3.19.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@next/env@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.4.tgz#5af629b43075281ecd7f87938802b7cf5b67e94b" - integrity sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg== - -"@next/eslint-plugin-next@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.4.tgz#9c52637af8eecab24dac3f2e5098376f6fc2dff4" - integrity sha512-BRy565KVK6Cdy8LHaHTiwctLqBu/RT84RLpESug70BDJzBlV8QBvODyx/j7wGhvYqp9kvstM05lyb6JaTkSCcQ== - dependencies: - glob "7.1.7" - -"@next/swc-android-arm-eabi@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz#c3dae178b7c15ad627d2e9b8dfb38caecb5c4ac7" - integrity sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw== - -"@next/swc-android-arm64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz#f320d60639e19ecffa1f9034829f2d95502a9a51" - integrity sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw== - -"@next/swc-darwin-arm64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz#fd578278312613eddcf3aee26910100509941b63" - integrity sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ== - -"@next/swc-darwin-x64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz#ace5f80d8c8348efe194f6d7074c6213c52b3944" - integrity sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA== - -"@next/swc-linux-arm-gnueabihf@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz#2bf2c83863635f19c71c226a2df936e001cce29c" - integrity sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg== - -"@next/swc-linux-arm64-gnu@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz#d577190f641c9b4b463719dd6b8953b6ba9be8d9" - integrity sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g== - -"@next/swc-linux-arm64-musl@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz#e70ffe70393d8f9242deecdb282ce5a8fd588b14" - integrity sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA== - -"@next/swc-linux-x64-gnu@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz#91498a130387fb1961902f2bee55863f8e910cff" - integrity sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA== - -"@next/swc-linux-x64-musl@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz#78057b03c148c121553d41521ad38f6c732762ff" - integrity sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA== - -"@next/swc-win32-arm64-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz#05bbaabacac23b8edf6caa99eb86b17550a09051" - integrity sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg== - -"@next/swc-win32-ia32-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz#8fd2fb48f04a2802e51fc320878bf6b411c1c866" - integrity sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g== - -"@next/swc-win32-x64-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz#a72ed44c9b1f850986a30fe36c59e01f8a79b5f3" - integrity sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ== - -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== - dependencies: - "@nodelib/fs.stat" "2.0.4" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== - dependencies: - "@nodelib/fs.scandir" "2.1.4" - fastq "^1.6.0" - -"@rushstack/eslint-patch@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64" - integrity sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw== - -"@tailwindcss/typography@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.2.tgz#24b069dab24d7a2467d01aca0dd432cb4b29f0ee" - integrity sha512-coq8DBABRPFcVhVIk6IbKyyHUt7YTEC/C992tatFB+yEx5WGBQrCgsSFjxHUr8AWXphWckadVJbominEduYBqw== - dependencies: - lodash.castarray "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.merge "^4.6.2" - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/node@^17.0.23": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/react@^17.0.43": - version "17.0.44" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" - integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.1" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" - integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== - -"@typescript-eslint/parser@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd" - integrity sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA== - dependencies: - "@typescript-eslint/scope-manager" "5.10.1" - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/typescript-estree" "5.10.1" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809" - integrity sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg== - dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" - -"@typescript-eslint/types@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea" - integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q== - -"@typescript-eslint/typescript-estree@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15" - integrity sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ== - dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b" - integrity sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ== - dependencies: - "@typescript-eslint/types" "5.10.1" - eslint-visitor-keys "^3.0.0" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-node@^1.6.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -array-includes@^3.1.3, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -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== - dependencies: - browserslist "^4.20.2" - caniuse-lite "^1.0.30001317" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -axe-core@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" - integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.20.2: - version "4.20.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" - integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== - dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" - escalade "^3.1.1" - node-releases "^2.0.2" - picocolors "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -caniuse-lite@^1.0.30001283, caniuse-lite@^1.0.30001317: - version "1.0.30001327" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz#c1546d7d7bb66506f0ccdad6a7d07fc6d668c858" - integrity sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -clone@2.x: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.1.4, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -core-js-pure@^3.19.0: - version "3.19.3" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.19.3.tgz#c69b2b36b58927317824994b532ec3f0f7e49607" - integrity sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA== - -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -damerau-levenshtein@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.84: - version "1.4.106" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz#e7a3bfa9d745dd9b9e597616cb17283cc349781a" - integrity sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-next@^12.1.4: - version "12.1.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.4.tgz#939ea2ff33034763300bf1e62482cea91212d274" - integrity sha512-Uj0jrVjoQbg9qerxRjSHoOOv3PEzoZxpb8G9LYct25fsflP8xIiUq0l4WEu2KSB5owuLv5hie7wSMqPEsHj+bQ== - dependencies: - "@next/eslint-plugin-next" "12.1.4" - "@rushstack/eslint-patch" "1.0.8" - "@typescript-eslint/parser" "5.10.1" - eslint-import-resolver-node "0.3.4" - eslint-import-resolver-typescript "2.4.0" - eslint-plugin-import "2.25.2" - eslint-plugin-jsx-a11y "6.5.1" - eslint-plugin-react "7.29.1" - eslint-plugin-react-hooks "4.3.0" - -eslint-import-resolver-node@0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-typescript@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz#ec1e7063ebe807f0362a7320543aaed6fe1100e1" - integrity sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA== - dependencies: - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-module-utils@^2.7.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-import@2.25.2: - version "2.25.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9" - integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.0" - has "^1.0.3" - is-core-module "^2.7.0" - is-glob "^4.0.3" - minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-jsx-a11y@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== - dependencies: - "@babel/runtime" "^7.16.3" - aria-query "^4.2.2" - array-includes "^3.1.4" - ast-types-flow "^0.0.7" - axe-core "^4.3.5" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.2.1" - language-tags "^1.0.5" - minimatch "^3.0.4" - -eslint-plugin-react-hooks@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" - integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== - -eslint-plugin-react@7.29.1: - version "7.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.1.tgz#6c40bc83142bb63d132a1b3565e2ea655411f800" - integrity sha512-WtzRpHMhsOX05ZrkyaaqmLl2uXGqmYooCfBxftJKlkYdsltiufGgfU7uuoHwR2lBam2Kh/EIVID4aU9e3kbCMA== - dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.0" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.6" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e" - integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q== - dependencies: - "@eslint/eslintrc" "^1.2.1" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== - dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.4: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-callable@^1.1.4: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" - integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== - dependencies: - has "^1.0.3" - -is-core-module@^2.7.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-glob@^4.0.0, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsona@^1.8.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/jsona/-/jsona-1.9.2.tgz#6da69c7fe5846166b98a5b6d967cdbcfd781b044" - integrity sha512-+af2mw8JbVUBNVFymWhovX8OV02xBKYTt8oST4HOmyfrLMfdWpatSrhvdldUTTcByzbWb4tgPbaZXaAV5yAbfg== - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.castarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" - integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.1.30: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" - integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== - -nanoid@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" - integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -next-drupal@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/next-drupal/-/next-drupal-1.2.1.tgz#e5a6ae347d1bfb95c19b9b87c5acb3f38ed69def" - integrity sha512-XG/WajhlMyeLnwKHhIBhIxp7kPUgFkGqHuhOj4KWUIuTeunrMeWS85YGrsz/bPnfJDduA6Njo3ZzUj7pauQLJQ== - dependencies: - jsona "^1.8.0" - node-cache "^5.1.2" - qs "^6.10.1" - -next@^12.1.4: - version "12.1.4" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.4.tgz#597a9bdec7aec778b442c4f6d41afd2c64a54b23" - integrity sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ== - dependencies: - "@next/env" "12.1.4" - caniuse-lite "^1.0.30001283" - postcss "8.4.5" - styled-jsx "5.0.1" - optionalDependencies: - "@next/swc-android-arm-eabi" "12.1.4" - "@next/swc-android-arm64" "12.1.4" - "@next/swc-darwin-arm64" "12.1.4" - "@next/swc-darwin-x64" "12.1.4" - "@next/swc-linux-arm-gnueabihf" "12.1.4" - "@next/swc-linux-arm64-gnu" "12.1.4" - "@next/swc-linux-arm64-musl" "12.1.4" - "@next/swc-linux-x64-gnu" "12.1.4" - "@next/swc-linux-x64-musl" "12.1.4" - "@next/swc-win32-arm64-msvc" "12.1.4" - "@next/swc-win32-ia32-msvc" "12.1.4" - "@next/swc-win32-x64-msvc" "12.1.4" - -node-cache@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== - dependencies: - clone "2.x" - -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-hash@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - -object-inspect@^1.11.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b" - integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA== - -object-inspect@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" - integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - -postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.0.tgz#d39c47091c4aec37f50272373a6a648ef5e97829" - integrity sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== - dependencies: - import-cwd "^3.0.0" - lilconfig "^2.0.3" - yaml "^1.10.2" - -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== - dependencies: - postcss-selector-parser "^6.0.6" - -postcss-selector-parser@^6.0.6: - version "6.0.7" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc" - integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@8.4.5: - version "8.4.5" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" - integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== - dependencies: - nanoid "^3.1.30" - picocolors "^1.0.0" - source-map-js "^1.0.1" - -postcss@^8.4.12, postcss@^8.4.6: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== - dependencies: - nanoid "^3.3.1" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@^6.10.1: - version "6.10.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.2.tgz#c1431bea37fc5b24c5bdbafa20f16bdf2a4b9ffe" - integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.13.1, resolve@^1.17.0, resolve@^1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-js@^1.0.1: - 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: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -string.prototype.matchall@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -styled-jsx@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.1.tgz#78fecbbad2bf95ce6cd981a08918ce4696f5fc80" - integrity sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tailwindcss@^3.0.23: - version "3.0.23" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.0.23.tgz#c620521d53a289650872a66adfcb4129d2200d10" - integrity sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA== - dependencies: - arg "^5.0.1" - chalk "^4.1.2" - chokidar "^3.5.3" - color-name "^1.1.4" - cosmiconfig "^7.0.1" - detective "^5.2.0" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.11" - glob-parent "^6.0.2" - is-glob "^4.0.3" - normalize-path "^3.0.0" - object-hash "^2.2.0" - postcss "^8.4.6" - postcss-js "^4.0.0" - postcss-load-config "^3.1.0" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" - integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== diff --git a/tsconfig.json b/tsconfig.json index 9291e04d..9b89be0a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,11 @@ { "compilerOptions": { - "target": "es5", + "target": "es2020", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": false, "forceConsistentCasingInFileNames": true, - "noEmit": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "node", diff --git a/www/.gitignore b/www/.gitignore index 22c8bbcb..6686735a 100644 --- a/www/.gitignore +++ b/www/.gitignore @@ -1,10 +1,16 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + # dependencies /node_modules /.pnp .pnp.js +.yarn/install-state.gz -# testing +# build/test artifacts +/.turbo /coverage +/cypress/screenshots +/cypress/videos # next.js /.next/ @@ -23,10 +29,11 @@ yarn-debug.log* yarn-error.log* # local env files -.env.local -.env.development.local -.env.test.local -.env.production.local +.env*.local # vercel .vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/www/content/docs/configuration.mdx b/www/content/docs/configuration.mdx index 42d9f8ac..baaaec03 100644 --- a/www/content/docs/configuration.mdx +++ b/www/content/docs/configuration.mdx @@ -217,34 +217,6 @@ A long-lived access token you can set directly on the client. --- -### forceIframeSameSiteCookie - - - -Use `forceIframeSameSiteCookie` in development only. - - - -- **Default value**: `false` -- **Required**: No - -If you're running your site in development and the host address is different from the iframe preview, you might run into issues with `SameSite` cookies. - -You can use this option to force the cookie to be set to `SameSite=None,Secure` in **development**. - -```ts -export const drupal = new DrupalClient( - process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, - { - forceIframeSameSiteCookie: process.env.NODE_ENV === "development", - } -) -``` - -For more info see: https://github.com/vercel/next.js/discussions/32238 - ---- - ### debug - **Default value**: `false` diff --git a/www/content/features/typescript.mdx b/www/content/features/typescript.mdx index 44d0c958..25d1a4ce 100644 --- a/www/content/features/typescript.mdx +++ b/www/content/features/typescript.mdx @@ -21,7 +21,6 @@ const tags = await drupal.getResourceCollection( ```ts // Any resource type. -const resources = await drupal.getResourceCollection( - "entity--bundle" -) +const resources = + await drupal.getResourceCollection("entity--bundle") ``` diff --git a/www/content/guides/page-limit.mdx b/www/content/guides/page-limit.mdx index f01f46a0..4c329a77 100644 --- a/www/content/guides/page-limit.mdx +++ b/www/content/guides/page-limit.mdx @@ -47,8 +47,8 @@ The following will return 100 items (Overridden using `path`): ```ts const articles = await drupal.getResourceCollection("node--article", { params: { - "fields[node--article]": "path,title" - } + "fields[node--article]": "path,title", + }, }) ``` @@ -59,7 +59,7 @@ const articles = await drupal.getResourceCollection("node--article", { params: { "fields[node--article]": "path,title", "page[limit]": 60, - } + }, }) ``` @@ -70,6 +70,6 @@ const articles = await drupal.getResourceCollection("node--article", { params: { "fields[node--article]": "path,title", "page[limit]": 999, - } + }, }) ``` diff --git a/www/content/guides/redirects.mdx b/www/content/guides/redirects.mdx index 52ea8e83..a0c6d38e 100644 --- a/www/content/guides/redirects.mdx +++ b/www/content/guides/redirects.mdx @@ -72,3 +72,13 @@ export async function getStaticProps( ``` With `fallback: "blocking"` in `getStaticPaths`, this will cache and handle redirects configured in Drupal and still work with incremental static regeneration. + +In multilingual setup you may need to specify `pathPrefix` option for `translatePathFromContext` for default locale. +In some cases Drupal can't find a matching redirect for path without explicit locale prefix. + +```tsx +// Get information about the path. +const path = await drupal.translatePathFromContext(context, { + pathPrefix: context.locale === context.defaultLocale ? context.locale : "/", +}) +``` diff --git a/www/content/tutorials/graphql/apply-patches.mdx b/www/content/tutorials/graphql/apply-patches.mdx index cf685951..43ad17a8 100644 --- a/www/content/tutorials/graphql/apply-patches.mdx +++ b/www/content/tutorials/graphql/apply-patches.mdx @@ -21,10 +21,10 @@ At the time of this writing, there are two patches we need to wire everything to // highlight-start "patches": { "drupal/subrequests": { - "Get same results on different request": "https://www.drupal.org/files/issues/2019-07-18/change_request_type-63049395-09.patch" + "#3049395-47 - Page Cache causes different subrequests to return the same responses": "https://www.drupal.org/files/issues/2022-12-06/subrequests-3049395-chnage-request-type-47.patch" }, "drupal/decoupled_router": { - "Unable to resolve path on node in other language than default": "https://www.drupal.org/files/issues/2022-11-30/decouple_router-3111456-resolve-language-issue-58.patch" + "#3111456-59 - Unable to resolve path on node in other language than default": "https://www.drupal.org/files/issues/2022-12-01/decouple_router-3111456-resolve-language-issue-58--get-translation.patch" } }, // highlight-end diff --git a/www/content/tutorials/graphql/enable-modules.mdx b/www/content/tutorials/graphql/enable-modules.mdx index b5d04a4f..1997a8c0 100644 --- a/www/content/tutorials/graphql/enable-modules.mdx +++ b/www/content/tutorials/graphql/enable-modules.mdx @@ -6,7 +6,14 @@ group: Quick Start (GraphQL) --- 1. Visit `/admin/modules`. -2. Enable the following modules: **Next.js** and **Next.js GraphQL**. +2. Enable the following modules: **Next.js**, **Next.js GraphQL**, **GraphQL Compose: Edges**, **GraphQL Compose: Routes**. + +## Configure GraphQL Compose + +1. Visit `/admin/config/graphql_compose`. +2. Enable "GraphQL", "Single Query", "Edge Query", & "Loading by Route" for the Article content type. +3. Enable all of the fields for the Article content type. +4. Do the same for the Basic page content type. ## Try GraphQL @@ -14,7 +21,7 @@ If you visit `/admin/config/graphql/servers/manage/graphql_compose_server/explor You can start testing GraphQL queries. Let's make our first request to fetch the first 5 articles. -Copy and paste the following in the query textbox and click run. +Copy and paste the following in the query text input and click the Execute Query (▶) button. ```graphql query Articles { diff --git a/www/content/tutorials/graphql/install-drupal.mdx b/www/content/tutorials/graphql/install-drupal.mdx index d5103b01..1db1d176 100644 --- a/www/content/tutorials/graphql/install-drupal.mdx +++ b/www/content/tutorials/graphql/install-drupal.mdx @@ -38,5 +38,5 @@ composer require drupal/next Run the following command to install GraphQL and GraphQL Compose modules: ```sh -composer require 'drupal/graphql:^4.4' 'drupal/graphql_compose:^1.0@beta' +composer require 'drupal/graphql:^4.6' 'drupal/graphql_compose:^2.0' ``` diff --git a/www/package.json b/www/package.json index 788a7e99..cca8df59 100644 --- a/www/package.json +++ b/www/package.json @@ -37,6 +37,6 @@ "remark-slug": "^6.0.0", "shiki": "^0.11.1", "tailwindcss": "^3.0.24", - "typescript": "^4.5.5" + "typescript": "^5.2.2" } } diff --git a/www/pages/_document.tsx b/www/pages/_document.tsx index 010d0def..82619a2b 100644 --- a/www/pages/_document.tsx +++ b/www/pages/_document.tsx @@ -10,7 +10,7 @@ export default class extends Document { diff --git a/www/pages/learn/index.tsx b/www/pages/learn/index.tsx index 20deeae1..dade53d7 100644 --- a/www/pages/learn/index.tsx +++ b/www/pages/learn/index.tsx @@ -1,4 +1,3 @@ -import { getAllMdxNodes } from "next-mdx/server" import Link from "next/link" import { Tutorial } from "types" diff --git a/yarn.lock b/yarn.lock index 6ea3f68e..a151c177 100644 --- a/yarn.lock +++ b/yarn.lock @@ -50,109 +50,109 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== -"@algolia/cache-browser-local-storage@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz#357318242fc542ffce41d6eb5b4a9b402921b0bb" - integrity sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ== - dependencies: - "@algolia/cache-common" "4.20.0" - -"@algolia/cache-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.20.0.tgz#ec52230509fce891091ffd0d890618bcdc2fa20d" - integrity sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ== - -"@algolia/cache-in-memory@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz#5f18d057bd6b3b075022df085c4f83bcca4e3e67" - integrity sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg== - dependencies: - "@algolia/cache-common" "4.20.0" - -"@algolia/client-account@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.20.0.tgz#23ce0b4cffd63100fb7c1aa1c67a4494de5bd645" - integrity sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/client-search" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-analytics@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.20.0.tgz#0aa6bef35d3a41ac3991b3f46fcd0bf00d276fa9" - integrity sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/client-search" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.20.0.tgz#ca60f04466515548651c4371a742fbb8971790ef" - integrity sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ== - dependencies: - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-personalization@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.20.0.tgz#ca81308e8ad0db3b27458b78355f124f29657181" - integrity sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/client-search@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.20.0.tgz#3bcce817ca6caedc835e0eaf6f580e02ee7c3e15" - integrity sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg== - dependencies: - "@algolia/client-common" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/transporter" "4.20.0" - -"@algolia/logger-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.20.0.tgz#f148ddf67e5d733a06213bebf7117cb8a651ab36" - integrity sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ== - -"@algolia/logger-console@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.20.0.tgz#ac443d27c4e94357f3063e675039cef0aa2de0a7" - integrity sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA== - dependencies: - "@algolia/logger-common" "4.20.0" - -"@algolia/requester-browser-xhr@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz#db16d0bdef018b93b51681d3f1e134aca4f64814" - integrity sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw== - dependencies: - "@algolia/requester-common" "4.20.0" - -"@algolia/requester-common@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.20.0.tgz#65694b2263a8712b4360fef18680528ffd435b5c" - integrity sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng== - -"@algolia/requester-node-http@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz#b52b182b52b0b16dec4070832267d484a6b1d5bb" - integrity sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng== - dependencies: - "@algolia/requester-common" "4.20.0" - -"@algolia/transporter@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.20.0.tgz#7e5b24333d7cc9a926b2f6a249f87c2889b944a9" - integrity sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg== - dependencies: - "@algolia/cache-common" "4.20.0" - "@algolia/logger-common" "4.20.0" - "@algolia/requester-common" "4.20.0" +"@algolia/cache-browser-local-storage@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz#14b6dc9abc9e3a304a5fffb063d15f30af1032d1" + integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/cache-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.22.1.tgz#c625dff4bc2a74e79f9aed67b4e053b0ef1b3ec1" + integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== + +"@algolia/cache-in-memory@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz#858a3d887f521362e87d04f3943e2810226a0d71" + integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/client-account@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.22.1.tgz#a7fb8b66b9a4f0a428e1426b2561144267d76d43" + integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-analytics@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.22.1.tgz#506558740b4d49b1b1e3393861f729a8ce921851" + integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.22.1.tgz#042b19c1b6157c485fa1b551349ab313944d2b05" + integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== + dependencies: + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-personalization@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.22.1.tgz#ff088d797648224fb582e9fe5828f8087835fa3d" + integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-search@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.22.1.tgz#508cc6ab3d1f4e9c02735a630d4dff6fbb8514a2" + integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/logger-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.22.1.tgz#79cf4cd295de0377a94582c6aaac59b1ded731d9" + integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== + +"@algolia/logger-console@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.22.1.tgz#0355345f6940f67aaa78ae9b81c06e44e49f2336" + integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== + dependencies: + "@algolia/logger-common" "4.22.1" + +"@algolia/requester-browser-xhr@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz#f04df6fe9690a071b267c77d26b83a3be9280361" + integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/requester-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.22.1.tgz#27be35f3718aafcb6b388ff9c3aa2defabd559ff" + integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== + +"@algolia/requester-node-http@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz#589a6fa828ad0f325e727a6fcaf4e1a2343cc62b" + integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/transporter@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.22.1.tgz#8843841b857dc021668f31647aa557ff19cd9cb1" + integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== + dependencies: + "@algolia/cache-common" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/requester-common" "4.22.1" "@alloc/quick-lru@^5.2.0": version "5.2.0" @@ -167,18 +167,18 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: - "@babel/highlight" "^7.22.13" + "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" - integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== "@babel/core@7.12.9": version "7.12.9" @@ -202,42 +202,42 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.23.2", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" - integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.0" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" - integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== +"@babel/eslint-parser@^7.23.10": + version "7.23.10" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz#2d4164842d6db798873b40e0c4238827084667a2" + integrity sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.12.5", "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== +"@babel/generator@^7.12.5", "@babel/generator@^7.23.6", "@babel/generator@^7.7.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.23.6" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -249,40 +249,40 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" - integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - browserslist "^4.21.9" + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" - integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== +"@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": + version "7.23.10" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz#25d55fafbaea31fd0e723820bb6cc3df72edf7ea" + integrity sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -291,10 +291,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" - integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -302,7 +302,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": +"@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== @@ -322,24 +322,24 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.15": +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" - integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-module-imports" "^7.22.15" @@ -364,7 +364,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": +"@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== @@ -373,7 +373,7 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": +"@babel/helper-replace-supers@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== @@ -403,20 +403,20 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" - integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== "@babel/helper-wrap-function@^7.22.20": version "7.22.20" @@ -427,52 +427,52 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" - integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.3.3": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.3" -"@babel/plugin-proposal-class-properties@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" + integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-proposal-object-rest-spread@7.12.1": version "7.12.1" @@ -530,24 +530,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -572,10 +565,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -635,10 +628,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" - integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -650,219 +643,211 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" - integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== +"@babel/plugin-transform-async-generator-functions@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" + integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== dependencies: - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== +"@babel/plugin-transform-block-scoping@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" - integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== +"@babel/plugin-transform-classes@^7.23.8": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" + integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" + "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== +"@babel/plugin-transform-dynamic-import@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== +"@babel/plugin-transform-export-namespace-from@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.12.10", "@babel/plugin-transform-flow-strip-types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" - -"@babel/plugin-transform-for-of@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== +"@babel/plugin-transform-for-of@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" + integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== +"@babel/plugin-transform-json-strings@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== dependencies: - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== dependencies: - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" - integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== +"@babel/plugin-transform-modules-systemjs@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" + integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": @@ -873,101 +858,101 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" - integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== +"@babel/plugin-transform-object-rest-spread@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== dependencies: - "@babel/compat-data" "^7.22.9" + "@babel/compat-data" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== +"@babel/plugin-transform-optional-catch-binding@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== +"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== +"@babel/plugin-transform-private-property-in-object@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-display-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" - integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== +"@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -978,148 +963,149 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.12.11", "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" - integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" -"@babel/plugin-transform-react-pure-annotations@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" - integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-runtime@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" - integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== +"@babel/plugin-transform-runtime@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" + integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" - integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" + integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-create-class-features-plugin" "^7.23.6" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" - integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== +"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" + integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== dependencies: - "@babel/compat-data" "^7.23.2" - "@babel/helper-compilation-targets" "^7.22.15" + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1131,71 +1117,61 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.9" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.8" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.9" + "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.23.0" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" core-js-compat "^3.31.0" semver "^6.3.1" -"@babel/preset-flow@^7.12.1": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.15.tgz#30318deb9b3ebd9f5738e96da03a531e0cd3165d" - integrity sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-flow-strip-types" "^7.22.5" - "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -1205,72 +1181,72 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.10", "@babel/preset-react@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" - integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== +"@babel/preset-react@^7.12.10", "@babel/preset-react@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-display-name" "^7.23.3" "@babel/plugin-transform-react-jsx" "^7.22.15" "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" "@babel/preset-typescript@^7.12.7": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" - integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-typescript" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== +"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.12.7", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +"@babel/template@^7.12.7", "@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.7.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== +"@babel/traverse@^7.12.9", "@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" - debug "^4.1.0" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: - "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" @@ -1284,164 +1260,161 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@commitlint/cli@^17.8.0": - version "17.8.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.8.0.tgz#917761331df4b7a0b97b2b31415b006847b6fd02" - integrity sha512-D3LdyZYbiRyAChfJMNlAd9f2P9vNQ7GWbI9gN2o7L5hF07QJDqj4z/pcJF3PjDbJWOaUUXla287RdDmmKqH2WQ== +"@commitlint/cli@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.6.1.tgz#78bffdfa00d6f01425d53096954993d83f2b343d" + integrity sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw== dependencies: - "@commitlint/format" "^17.4.4" - "@commitlint/lint" "^17.8.0" - "@commitlint/load" "^17.8.0" - "@commitlint/read" "^17.5.1" - "@commitlint/types" "^17.4.4" + "@commitlint/format" "^18.6.1" + "@commitlint/lint" "^18.6.1" + "@commitlint/load" "^18.6.1" + "@commitlint/read" "^18.6.1" + "@commitlint/types" "^18.6.1" execa "^5.0.0" lodash.isfunction "^3.0.9" resolve-from "5.0.0" resolve-global "1.0.0" yargs "^17.0.0" -"@commitlint/config-conventional@^17.8.0": - version "17.8.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.8.0.tgz#3bb030ea4133d3ea57fe1042318e669b929205cb" - integrity sha512-MgiFXujmqAvi7M33C7OSMTznwrVkckrbXe/aZWQ/+KFGLLF6IE50XIcjGrW0/uiDGb/im5qbqF2dh1dCFNa+sQ== +"@commitlint/config-conventional@^18.6.2": + version "18.6.2" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.6.2.tgz#617f3ee761578040cade530631058699642cbd78" + integrity sha512-PcgSYg1AKGQIwDQKbaHtJsfqYy4uJTC7crLVZ83lfjcPaec4Pry2vLeaWej7ao2KsT20l9dWoMPpEGg8LWdUuA== dependencies: - conventional-changelog-conventionalcommits "^6.1.0" + "@commitlint/types" "^18.6.1" + conventional-changelog-conventionalcommits "^7.0.2" -"@commitlint/config-validator@^17.6.7": - version "17.6.7" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.6.7.tgz#c664d42a1ecf5040a3bb0843845150f55734df41" - integrity sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ== +"@commitlint/config-validator@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.6.1.tgz#e0d71a99c984a68586c7ae7afd3f52342022fae8" + integrity sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw== dependencies: - "@commitlint/types" "^17.4.4" + "@commitlint/types" "^18.6.1" ajv "^8.11.0" -"@commitlint/ensure@^17.6.7": - version "17.6.7" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-17.6.7.tgz#77a77a0c05e6a1c34589f59e82e6cb937101fc4b" - integrity sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw== +"@commitlint/ensure@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.6.1.tgz#17141e083200ca94d8480dc23b0e8f8b1fd37b7f" + integrity sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ== dependencies: - "@commitlint/types" "^17.4.4" + "@commitlint/types" "^18.6.1" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.snakecase "^4.1.1" lodash.startcase "^4.4.0" lodash.upperfirst "^4.3.1" -"@commitlint/execute-rule@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz#4518e77958893d0a5835babe65bf87e2638f6939" - integrity sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA== +"@commitlint/execute-rule@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.6.1.tgz#18175e043fe6fb5fceea7b8530316c644f93dfe6" + integrity sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg== -"@commitlint/format@^17.4.4": - version "17.4.4" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-17.4.4.tgz#0f6e1b4d7a301c7b1dfd4b6334edd97fc050b9f5" - integrity sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ== +"@commitlint/format@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.6.1.tgz#5f2b8b3ae4d8d80bd9239178e97df63e5b8d280a" + integrity sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg== dependencies: - "@commitlint/types" "^17.4.4" + "@commitlint/types" "^18.6.1" chalk "^4.1.0" -"@commitlint/is-ignored@^17.8.0": - version "17.8.0" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.8.0.tgz#429a050cebe8dc56dd4fe4f4c23ea9e1a679dfc6" - integrity sha512-8bR6rxNcWaNprPBdE4ePIOwbxutTQGOsRPYWssX+zjGxnEljzaZSGzFUOMxapYILlf8Tts/O1wPQgG549Rdvdg== - dependencies: - "@commitlint/types" "^17.4.4" - semver "7.5.4" - -"@commitlint/lint@^17.8.0": - version "17.8.0" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.8.0.tgz#d3a7fafe810db060aea15322e30384896da887f9" - integrity sha512-4ihwnqOY4TcJN6iz5Jv1LeYavvBllONwFyGxOIWmCT5s4PNMb43cws2TUdbXTZL1Vq59etGKd5LWYDFPVbs5EA== - dependencies: - "@commitlint/is-ignored" "^17.8.0" - "@commitlint/parse" "^17.7.0" - "@commitlint/rules" "^17.7.0" - "@commitlint/types" "^17.4.4" - -"@commitlint/load@^17.8.0": - version "17.8.0" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.8.0.tgz#82f6c7555daecb4ce4b8a6282fcecc3665747578" - integrity sha512-9VnGXYJCP4tXmR4YrwP8n5oX6T5ZsHfPQq6WuUQOvAI+QsDQMaTGgTRXr7us+xsjz+b+mMBSagogqfUx2aixyw== - dependencies: - "@commitlint/config-validator" "^17.6.7" - "@commitlint/execute-rule" "^17.4.0" - "@commitlint/resolve-extends" "^17.6.7" - "@commitlint/types" "^17.4.4" - "@types/node" "20.5.1" +"@commitlint/is-ignored@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.6.1.tgz#4ee08ba91ff3defb06e0ef19259a9c6734a8d06e" + integrity sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA== + dependencies: + "@commitlint/types" "^18.6.1" + semver "7.6.0" + +"@commitlint/lint@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.6.1.tgz#fe3834636c99ee14534a8eb3832831ac362e9fd8" + integrity sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ== + dependencies: + "@commitlint/is-ignored" "^18.6.1" + "@commitlint/parse" "^18.6.1" + "@commitlint/rules" "^18.6.1" + "@commitlint/types" "^18.6.1" + +"@commitlint/load@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.6.1.tgz#fb79ed7ee8b5897a9b5c274c1e24eda9162df816" + integrity sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA== + dependencies: + "@commitlint/config-validator" "^18.6.1" + "@commitlint/execute-rule" "^18.6.1" + "@commitlint/resolve-extends" "^18.6.1" + "@commitlint/types" "^18.6.1" chalk "^4.1.0" - cosmiconfig "^8.0.0" - cosmiconfig-typescript-loader "^4.0.0" + cosmiconfig "^8.3.6" + cosmiconfig-typescript-loader "^5.0.0" lodash.isplainobject "^4.0.6" lodash.merge "^4.6.2" lodash.uniq "^4.5.0" resolve-from "^5.0.0" - ts-node "^10.8.1" - typescript "^4.6.4 || ^5.0.0" -"@commitlint/message@^17.4.2": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-17.4.2.tgz#f4753a79701ad6db6db21f69076e34de6580e22c" - integrity sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q== +"@commitlint/message@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.6.1.tgz#107bd40923ad23d2de56c92a68b179ebfb7e314e" + integrity sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw== -"@commitlint/parse@^17.7.0": - version "17.7.0" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.7.0.tgz#aacb2d189e50ab8454154b1df150aaf20478ae47" - integrity sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag== +"@commitlint/parse@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.6.1.tgz#2946b814125e907b9c4d63d3e71d0c1b54b30b62" + integrity sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ== dependencies: - "@commitlint/types" "^17.4.4" - conventional-changelog-angular "^6.0.0" - conventional-commits-parser "^4.0.0" + "@commitlint/types" "^18.6.1" + conventional-changelog-angular "^7.0.0" + conventional-commits-parser "^5.0.0" -"@commitlint/read@^17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.5.1.tgz#fec903b766e2c41e3cefa80630040fcaba4f786c" - integrity sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg== +"@commitlint/read@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.6.1.tgz#8c138311ed9749427920c369f6276be136f2aa50" + integrity sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w== dependencies: - "@commitlint/top-level" "^17.4.0" - "@commitlint/types" "^17.4.4" - fs-extra "^11.0.0" + "@commitlint/top-level" "^18.6.1" + "@commitlint/types" "^18.6.1" git-raw-commits "^2.0.11" minimist "^1.2.6" -"@commitlint/resolve-extends@^17.6.7": - version "17.6.7" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz#9c53a4601c96ab2dd20b90fb35c988639307735d" - integrity sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg== +"@commitlint/resolve-extends@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.6.1.tgz#f0572c682fc24dbabe2e0f42873261e0fa42c91a" + integrity sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ== dependencies: - "@commitlint/config-validator" "^17.6.7" - "@commitlint/types" "^17.4.4" + "@commitlint/config-validator" "^18.6.1" + "@commitlint/types" "^18.6.1" import-fresh "^3.0.0" lodash.mergewith "^4.6.2" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^17.7.0": - version "17.7.0" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.7.0.tgz#b97a4933c5cba11a659a19ee467f6f000f31533e" - integrity sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA== +"@commitlint/rules@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.6.1.tgz#da25aeffe6c0e1c7625e44f46089fb8860986caf" + integrity sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew== dependencies: - "@commitlint/ensure" "^17.6.7" - "@commitlint/message" "^17.4.2" - "@commitlint/to-lines" "^17.4.0" - "@commitlint/types" "^17.4.4" + "@commitlint/ensure" "^18.6.1" + "@commitlint/message" "^18.6.1" + "@commitlint/to-lines" "^18.6.1" + "@commitlint/types" "^18.6.1" execa "^5.0.0" -"@commitlint/to-lines@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-17.4.0.tgz#9bd02e911e7d4eab3fb4a50376c4c6d331e10d8d" - integrity sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg== +"@commitlint/to-lines@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-18.6.1.tgz#d28827a4a540c98eea1aae31dafd66f80b2f1b9e" + integrity sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q== -"@commitlint/top-level@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-17.4.0.tgz#540cac8290044cf846fbdd99f5cc51e8ac5f27d6" - integrity sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g== +"@commitlint/top-level@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-18.6.1.tgz#429fcb985e3beaba9b17e05c0ae61926c647baf0" + integrity sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw== dependencies: find-up "^5.0.0" -"@commitlint/types@^17.4.4": - version "17.4.4" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.4.4.tgz#1416df936e9aad0d6a7bbc979ecc31e55dade662" - integrity sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ== +"@commitlint/types@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.6.1.tgz#7eb3ab2d799d9166fbb98b96b0744581e59a4ad4" + integrity sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg== dependencies: chalk "^4.1.0" @@ -1499,22 +1472,137 @@ "@docsearch/css" "3.5.2" algoliasearch "^4.19.1" -"@eslint-community/eslint-utils@^4.2.0": +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1526,27 +1614,22 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== "@fastify/busboy@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" - integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== - -"@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" + integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== -"@hapi/hoek@^9.0.0": +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== -"@hapi/topo@^5.0.0": +"@hapi/topo@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== @@ -1554,10 +1637,11 @@ "@hapi/hoek" "^9.0.0" "@headlessui/react@^1.6.4": - version "1.7.17" - resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.17.tgz#a0ec23af21b527c030967245fd99776aa7352bc6" - integrity sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow== + version "1.7.18" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.18.tgz#30af4634d2215b2ca1aa29d07f33d02bea82d9d7" + integrity sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ== dependencies: + "@tanstack/react-virtual" "^3.0.0-beta.60" client-only "^0.0.1" "@hookform/resolvers@^2.8.3": @@ -1565,13 +1649,13 @@ resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-2.9.11.tgz#9ce96e7746625a89239f68ca57c4f654264c17ef" integrity sha512-bA3aZ79UgcHj7tFV7RlgThzwSSHZgvfbt2wprldRkYBcMopdMvHyO17Wwp/twcJasNFischFfS7oz8Katz8DdQ== -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": @@ -1579,10 +1663,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -1594,6 +1678,18 @@ resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1605,178 +1701,201 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" micromatch "^4.0.4" - rimraf "^3.0.0" + pretty-format "^29.7.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^27.5.1" + jest-mock "^29.7.0" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" + glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" graceful-fs "^4.2.9" - source-map "^0.6.0" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@jest/test-result" "^27.5.1" + "@jest/test-result" "^29.7.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + jest-haste-map "^29.7.0" + slash "^3.0.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.2" -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: + "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" - "@types/yargs" "^16.0.0" + "@types/yargs" "^17.0.8" chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": @@ -1789,23 +1908,15 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -1819,724 +1930,123 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@lerna/add@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f" - integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== - dependencies: - "@lerna/bootstrap" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - npm-package-arg "^8.1.0" - p-map "^4.0.0" - pacote "^11.2.6" - semver "^7.3.4" - -"@lerna/bootstrap@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz#5f5c5e2c6cfc8fcec50cb2fbe569a8c607101891" - integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/has-npm-version" "4.0.0" - "@lerna/npm-install" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - read-package-tree "^5.3.1" +"@lerna/create@8.1.2": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-8.1.2.tgz#4dc8b3f59c963275bfb8b390491068751101f477" + integrity sha512-GzScCIkAW3tg3+Yn/MKCH9963bzG+zpjGz2NdfYDlYWI7p0f/SH46v1dqpPpYmZ2E/m3JK8HjTNNNL8eIm8/YQ== + dependencies: + "@npmcli/run-script" "7.0.2" + "@nx/devkit" ">=17.1.2 < 19" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.11" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.1" + columnify "1.6.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "^8.2.0" + dedent "0.7.0" + execa "5.0.0" + fs-extra "^11.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + ini "^1.3.8" + init-package-json "5.0.0" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + js-yaml "4.1.0" + libnpmpublish "7.3.0" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.5" + npmlog "^6.0.2" + nx ">=17.1.2 < 19" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-reduce "^2.1.0" + pacote "^17.0.5" + pify "5.0.0" + read-cmd-shim "4.0.0" + read-package-json "6.0.4" + resolve-from "5.0.0" + rimraf "^4.4.1" semver "^7.3.4" + signal-exit "3.0.7" + slash "^3.0.0" + ssri "^9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + upath "2.0.1" + uuid "^9.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "5.0.0" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" -"@lerna/changed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-4.0.0.tgz#b9fc76cea39b9292a6cd263f03eb57af85c9270b" - integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== +"@mapbox/rehype-prism@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@mapbox/rehype-prism/-/rehype-prism-0.8.0.tgz#c8b6eafb041a97e143fcbf93dd4e319ab0c131d6" + integrity sha512-bIz4a3oZ8g+pQBHSMMIxNpYOMX4yq4aZdpezoiCl9yJudh1Z9SRmHQqH6f+WtTBNOORzXMEGkvBze4PiH17wtA== dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" + hast-util-to-string "^1.0.4" + mrm "^3.0.9" + refractor "^3.4.0" + unist-util-visit "^2.0.3" -"@lerna/check-working-tree@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz#257e36a602c00142e76082a19358e3e1ae8dbd58" - integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== +"@mdx-js/mdx@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: - "@lerna/collect-uncommitted" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/validation-error" "4.0.0" + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" -"@lerna/child-process@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-4.0.0.tgz#341b96a57dffbd9705646d316e231df6fa4df6e1" - integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== - dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" - -"@lerna/clean@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-4.0.0.tgz#8f778b6f2617aa2a936a6b5e085ae62498e57dc5" - integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - -"@lerna/cli@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-4.0.0.tgz#8eabd334558836c1664df23f19acb95e98b5bbf3" - integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== - dependencies: - "@lerna/global-options" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^16.2.0" - -"@lerna/collect-uncommitted@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz#855cd64612969371cfc2453b90593053ff1ba779" - integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== - dependencies: - "@lerna/child-process" "4.0.0" - chalk "^4.1.0" - npmlog "^4.1.2" - -"@lerna/collect-updates@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz#8e208b1bafd98a372ff1177f7a5e288f6bea8041" - integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/describe-ref" "4.0.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^3.0.0" - -"@lerna/command@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-4.0.0.tgz#991c7971df8f5bf6ae6e42c808869a55361c1b98" - integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/project" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/write-log-file" "4.0.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^4.1.2" - -"@lerna/conventional-commits@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz#660fb2c7b718cb942ead70110df61f18c6f99750" - integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== - dependencies: - "@lerna/validation-error" "4.0.0" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.2" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - lodash.template "^4.5.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - semver "^7.3.4" - -"@lerna/create-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz#8c5317ce5ae89f67825443bd7651bf4121786228" - integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== - dependencies: - cmd-shim "^4.1.0" - fs-extra "^9.1.0" - npmlog "^4.1.2" - -"@lerna/create@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-4.0.0.tgz#b6947e9b5dfb6530321952998948c3e63d64d730" - integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" - p-reduce "^2.1.0" - pacote "^11.2.6" - pify "^5.0.0" - semver "^7.3.4" - slash "^3.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" - yargs-parser "20.2.4" - -"@lerna/describe-ref@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz#53c53b4ea65fdceffa072a62bfebe6772c45d9ec" - integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - -"@lerna/diff@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-4.0.0.tgz#6d3071817aaa4205a07bf77cfc6e932796d48b92" - integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/validation-error" "4.0.0" - npmlog "^4.1.2" - -"@lerna/exec@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-4.0.0.tgz#eb6cb95cb92d42590e9e2d628fcaf4719d4a8be6" - integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" - -"@lerna/filter-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-4.0.0.tgz#ac94cc515d7fa3b47e2f7d74deddeabb1de5e9e6" - integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== - dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/filter-packages" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - -"@lerna/filter-packages@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz#b1f70d70e1de9cdd36a4e50caa0ac501f8d012f2" - integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== - dependencies: - "@lerna/validation-error" "4.0.0" - multimatch "^5.0.0" - npmlog "^4.1.2" - -"@lerna/get-npm-exec-opts@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz#dc955be94a4ae75c374ef9bce91320887d34608f" - integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== - dependencies: - npmlog "^4.1.2" - -"@lerna/get-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-4.0.0.tgz#0989d61624ac1f97e393bdad2137c49cd7a37823" - integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== - dependencies: - fs-extra "^9.1.0" - ssri "^8.0.1" - tar "^6.1.0" - -"@lerna/github-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-4.0.0.tgz#2ced67721363ef70f8e12ffafce4410918f4a8a4" - integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== - dependencies: - "@lerna/child-process" "4.0.0" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^18.1.0" - git-url-parse "^11.4.4" - npmlog "^4.1.2" - -"@lerna/gitlab-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz#00dad73379c7b38951d4b4ded043504c14e2b67d" - integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== - dependencies: - node-fetch "^2.6.1" - npmlog "^4.1.2" - whatwg-url "^8.4.0" - -"@lerna/global-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-4.0.0.tgz#c7d8b0de6a01d8a845e2621ea89e7f60f18c6a5f" - integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== - -"@lerna/has-npm-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz#d3fc3292c545eb28bd493b36e6237cf0279f631c" - integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== - dependencies: - "@lerna/child-process" "4.0.0" - semver "^7.3.4" - -"@lerna/import@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-4.0.0.tgz#bde656c4a451fa87ae41733ff8a8da60547c5465" - integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" - -"@lerna/info@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-4.0.0.tgz#b9fb0e479d60efe1623603958a831a88b1d7f1fc" - integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/output" "4.0.0" - envinfo "^7.7.4" - -"@lerna/init@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-4.0.0.tgz#dadff67e6dfb981e8ccbe0e6a310e837962f6c7a" - integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" - -"@lerna/link@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-4.0.0.tgz#c3a38aabd44279d714e90f2451e31b63f0fb65ba" - integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - p-map "^4.0.0" - slash "^3.0.0" - -"@lerna/list@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-4.0.0.tgz#24b4e6995bd73f81c556793fe502b847efd9d1d7" - integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" - -"@lerna/listable@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-4.0.0.tgz#d00d6cb4809b403f2b0374fc521a78e318b01214" - integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== - dependencies: - "@lerna/query-graph" "4.0.0" - chalk "^4.1.0" - columnify "^1.5.4" - -"@lerna/log-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-4.0.0.tgz#95168fe2e26ac6a71e42f4be857519b77e57a09f" - integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== - dependencies: - byte-size "^7.0.0" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" - -"@lerna/npm-conf@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz#b259fd1e1cee2bf5402b236e770140ff9ade7fd2" - integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== - dependencies: - config-chain "^1.1.12" - pify "^5.0.0" - -"@lerna/npm-dist-tag@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz#d1e99b4eccd3414142f0548ad331bf2d53f3257a" - integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== - dependencies: - "@lerna/otplease" "4.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - -"@lerna/npm-install@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-4.0.0.tgz#31180be3ab3b7d1818a1a0c206aec156b7094c78" - integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" - -"@lerna/npm-publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz#84eb62e876fe949ae1fd62c60804423dbc2c4472" - integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== - dependencies: - "@lerna/otplease" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - read-package-json "^3.0.0" - -"@lerna/npm-run-script@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz#dfebf4f4601442e7c0b5214f9fb0d96c9350743b" - integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - npmlog "^4.1.2" - -"@lerna/otplease@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-4.0.0.tgz#84972eb43448f8a1077435ba1c5e59233b725850" - integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== - dependencies: - "@lerna/prompt" "4.0.0" - -"@lerna/output@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-4.0.0.tgz#b1d72215c0e35483e4f3e9994debc82c621851f2" - integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== - dependencies: - npmlog "^4.1.2" - -"@lerna/pack-directory@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz#8b617db95d20792f043aaaa13a9ccc0e04cb4c74" - integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== - dependencies: - "@lerna/get-packed" "4.0.0" - "@lerna/package" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - npm-packlist "^2.1.4" - npmlog "^4.1.2" - tar "^6.1.0" - temp-write "^4.0.0" - -"@lerna/package-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-4.0.0.tgz#16a00253a8ac810f72041481cb46bcee8d8123dd" - integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== - dependencies: - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/validation-error" "4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - semver "^7.3.4" - -"@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== - dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" - -"@lerna/prerelease-id-from-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz#c7e0676fcee1950d85630e108eddecdd5b48c916" - integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== - dependencies: - semver "^7.3.4" - -"@lerna/profiler@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-4.0.0.tgz#8a53ab874522eae15d178402bff90a14071908e9" - integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== - dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - upath "^2.0.1" - -"@lerna/project@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== - dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^4.1.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" - -"@lerna/prompt@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-4.0.0.tgz#5ec69a803f3f0db0ad9f221dad64664d3daca41b" - integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== - dependencies: - inquirer "^7.3.3" - npmlog "^4.1.2" - -"@lerna/publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-4.0.0.tgz#f67011305adeba120066a3b6d984a5bb5fceef65" - integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/log-packed" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/npm-dist-tag" "4.0.0" - "@lerna/npm-publish" "4.0.0" - "@lerna/otplease" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/pack-directory" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/version" "4.0.0" - fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^11.2.6" - semver "^7.3.4" - -"@lerna/pulse-till-done@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz#04bace7d483a8205c187b806bcd8be23d7bb80a3" - integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== - dependencies: - npmlog "^4.1.2" - -"@lerna/query-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-4.0.0.tgz#09dd1c819ac5ee3f38db23931143701f8a6eef63" - integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== - dependencies: - "@lerna/package-graph" "4.0.0" - -"@lerna/resolve-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz#6d006628a210c9b821964657a9e20a8c9a115e14" - integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== - dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - read-cmd-shim "^2.0.0" - -"@lerna/rimraf-dir@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz#2edf3b62d4eb0ef4e44e430f5844667d551ec25a" - integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - path-exists "^4.0.0" - rimraf "^3.0.2" - -"@lerna/run-lifecycle@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz#e648a46f9210a9bcd7c391df6844498cb5079334" - integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== - dependencies: - "@lerna/npm-conf" "4.0.0" - npm-lifecycle "^3.1.5" - npmlog "^4.1.2" - -"@lerna/run-topologically@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz#af846eeee1a09b0c2be0d1bfb5ef0f7b04bb1827" - integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== - dependencies: - "@lerna/query-graph" "4.0.0" - p-queue "^6.6.2" - -"@lerna/run@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-4.0.0.tgz#4bc7fda055a729487897c23579694f6183c91262" - integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-run-script" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/timer" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" - -"@lerna/symlink-binary@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz#21009f62d53a425f136cb4c1a32c6b2a0cc02d47" - integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== - dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/package" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - -"@lerna/symlink-dependencies@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz#8910eca084ae062642d0490d8972cf2d98e9ebbd" - integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== - dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/resolve-symlink" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - -"@lerna/timer@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-4.0.0.tgz#a52e51bfcd39bfd768988049ace7b15c1fd7a6da" - integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== - -"@lerna/validation-error@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== - dependencies: - npmlog "^4.1.2" - -"@lerna/version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-4.0.0.tgz#532659ec6154d8a8789c5ab53878663e244e3228" - integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/conventional-commits" "4.0.0" - "@lerna/github-client" "4.0.0" - "@lerna/gitlab-client" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - temp-write "^4.0.0" - write-json-file "^4.3.0" - -"@lerna/write-log-file@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" - integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== - dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" - -"@mapbox/rehype-prism@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@mapbox/rehype-prism/-/rehype-prism-0.8.0.tgz#c8b6eafb041a97e143fcbf93dd4e319ab0c131d6" - integrity sha512-bIz4a3oZ8g+pQBHSMMIxNpYOMX4yq4aZdpezoiCl9yJudh1Z9SRmHQqH6f+WtTBNOORzXMEGkvBze4PiH17wtA== - dependencies: - hast-util-to-string "^1.0.4" - mrm "^3.0.9" - refractor "^3.4.0" - unist-util-visit "^2.0.3" - -"@mdx-js/mdx@^1.6.22": - version "1.6.22" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" - integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== - dependencies: - "@babel/core" "7.12.9" - "@babel/plugin-syntax-jsx" "7.12.1" - "@babel/plugin-syntax-object-rest-spread" "7.8.3" - "@mdx-js/util" "1.6.22" - babel-plugin-apply-mdx-type-prop "1.6.22" - babel-plugin-extract-import-names "1.6.22" - camelcase-css "2.0.1" - detab "2.0.4" - hast-util-raw "6.0.1" - lodash.uniq "4.5.0" - mdast-util-to-hast "10.0.1" - remark-footnotes "2.0.0" - remark-mdx "1.6.22" - remark-parse "8.0.3" - remark-squeeze-paragraphs "4.0.0" - style-to-object "0.3.0" - unified "9.2.0" - unist-builder "2.0.3" - unist-util-visit "2.0.3" - -"@mdx-js/react@^1.6.22": - version "1.6.22" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" - integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== +"@mdx-js/react@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== "@mdx-js/util@1.6.22": version "1.6.22" @@ -2553,6 +2063,11 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.6.tgz#c1148e2e1aa166614f05161ee8f77ded467062bc" integrity sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw== +"@next/env@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.0.tgz#43d92ebb53bc0ae43dcc64fb4d418f8f17d7a341" + integrity sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw== + "@next/eslint-plugin-next@12.3.4", "@next/eslint-plugin-next@^12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz#e7dc00e2e89ed361f111d687b8534483ec15518b" @@ -2560,12 +2075,12 @@ dependencies: glob "7.1.7" -"@next/eslint-plugin-next@13.5.6": - version "13.5.6" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz#cf279b94ddc7de49af8e8957f0c3b7349bc489bf" - integrity sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg== +"@next/eslint-plugin-next@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz#29b041233fac7417e22eefa4146432d5cd910820" + integrity sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q== dependencies: - glob "7.1.7" + glob "10.3.10" "@next/swc-android-arm-eabi@12.3.4": version "12.3.4" @@ -2587,6 +2102,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz#b15d139d8971360fca29be3bdd703c108c9a45fb" integrity sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA== +"@next/swc-darwin-arm64@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz#70a57c87ab1ae5aa963a3ba0f4e59e18f4ecea39" + integrity sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ== + "@next/swc-darwin-x64@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.4.tgz#e7dc63cd2ac26d15fb84d4d2997207fb9ba7da0f" @@ -2597,6 +2117,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz#9c72ee31cc356cb65ce6860b658d807ff39f1578" integrity sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA== +"@next/swc-darwin-x64@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz#0863a22feae1540e83c249384b539069fef054e9" + integrity sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g== + "@next/swc-freebsd-x64@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.4.tgz#fe7ceec58746fdf03f1fcb37ec1331c28e76af93" @@ -2617,6 +2142,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz#59f5f66155e85380ffa26ee3d95b687a770cfeab" integrity sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg== +"@next/swc-linux-arm64-gnu@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz#893da533d3fce4aec7116fe772d4f9b95232423c" + integrity sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ== + "@next/swc-linux-arm64-musl@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.4.tgz#4d1db6de6dc982b974cd1c52937111e3e4a34bd3" @@ -2627,6 +2157,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz#f012518228017052736a87d69bae73e587c76ce2" integrity sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q== +"@next/swc-linux-arm64-musl@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz#d81ddcf95916310b8b0e4ad32b637406564244c0" + integrity sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g== + "@next/swc-linux-x64-gnu@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.4.tgz#c3b414d77bab08b35f7dd8943d5586f0adb15e38" @@ -2637,6 +2172,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz#339b867a7e9e7ee727a700b496b269033d820df4" integrity sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw== +"@next/swc-linux-x64-gnu@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz#18967f100ec19938354332dcb0268393cbacf581" + integrity sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ== + "@next/swc-linux-x64-musl@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.4.tgz#187a883ec09eb2442a5ebf126826e19037313c61" @@ -2647,6 +2187,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz#ae0ae84d058df758675830bcf70ca1846f1028f2" integrity sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ== +"@next/swc-linux-x64-musl@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz#77077cd4ba8dda8f349dc7ceb6230e68ee3293cf" + integrity sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg== + "@next/swc-win32-arm64-msvc@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.4.tgz#89befa84e453ed2ef9a888f375eba565a0fde80b" @@ -2657,6 +2202,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz#a5cc0c16920485a929a17495064671374fdbc661" integrity sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg== +"@next/swc-win32-arm64-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz#5f0b8cf955644104621e6d7cc923cad3a4c5365a" + integrity sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ== + "@next/swc-win32-ia32-msvc@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.4.tgz#cb50c08f0e40ead63642a7f269f0c8254261f17c" @@ -2667,6 +2217,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz#6a2409b84a2cbf34bf92fe714896455efb4191e4" integrity sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg== +"@next/swc-win32-ia32-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz#21f4de1293ac5e5a168a412b139db5d3420a89d0" + integrity sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw== + "@next/swc-win32-x64-msvc@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.4.tgz#d28ea15a72cdcf96201c60a43e9630cd7fda168f" @@ -2677,6 +2232,11 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz#4a3e2a206251abc729339ba85f60bc0433c2865d" integrity sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ== +"@next/swc-win32-x64-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz#e561fb330466d41807123d932b365cf3d33ceba2" + integrity sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg== + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -2705,255 +2265,377 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/ci-detect@^1.0.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" - integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== +"@npmcli/agent@^2.0.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.1.tgz#8aa677d0a4136d57524336a35d5679aedf2d56f7" + integrity sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.1" -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== +"@npmcli/fs@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== dependencies: - "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== +"@npmcli/git@^5.0.0": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.4.tgz#d18c50f99649e6e89e8b427318134f582498700c" + integrity sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ== dependencies: - "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" - mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" + "@npmcli/promise-spawn" "^7.0.0" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^3.0.0" promise-inflight "^1.0.1" promise-retry "^2.0.1" semver "^7.3.5" - which "^2.0.2" + which "^4.0.0" -"@npmcli/installed-package-contents@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== +"@npmcli/installed-package-contents@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" + integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== -"@npmcli/node-gyp@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" - integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== +"@npmcli/package-json@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.0.0.tgz#77d0f8b17096763ccbd8af03b7117ba6e34d6e91" + integrity sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^3.0.0" + semver "^7.5.3" -"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== +"@npmcli/promise-spawn@^7.0.0": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz#a836de2f42a2245d629cf6fbb8dd6c74c74c55af" + integrity sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg== dependencies: - infer-owner "^1.0.4" + which "^4.0.0" -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== +"@npmcli/run-script@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.2.tgz#497e7f058799497889df65900c711312252276d3" + integrity sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w== dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" - read-package-json-fast "^2.0.1" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + read-package-json-fast "^3.0.0" + which "^4.0.0" -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" +"@npmcli/run-script@^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.4.tgz#9f29aaf4bfcf57f7de2a9e28d1ef091d14b2e6eb" + integrity sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + which "^4.0.0" + +"@nrwl/devkit@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-18.0.4.tgz#5135f2f27218ca34d7b93f95f9967f75320ce75a" + integrity sha512-fKHnjg4/9MdFd2U4e8p6ja9fRa864DCyF70kB4YUB9NuUIgWLQ15Uj6wXC3xjdXmxQRyHDa7ORodVoFzdo4UCg== + dependencies: + "@nx/devkit" "18.0.4" + +"@nrwl/tao@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-18.0.4.tgz#a74933a4c7d1b7c6467a526e9ac524f3b8edd212" + integrity sha512-/PzGOJevlDQnp5RPXF3WDe+w1cdohGkY+mbJUgDVA4Q5JEPT1DtE10h9GgdHdzkPjVPNYsaI4Vs/53NUdlVHHA== + dependencies: + nx "18.0.4" + tslib "^2.3.0" + +"@nx/devkit@18.0.4", "@nx/devkit@>=17.1.2 < 19": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-18.0.4.tgz#fec28139ef5d078933c5f1b5a7e0a585672dbdd6" + integrity sha512-Vs1AXgOjMJyaWpKopD04dy0FwQ22n5ZR1bFf98Ab4Ht0WJwJE90IpUVAkwI03n5BYxAKOlQnFltsB4gu6Y8mZQ== + dependencies: + "@nrwl/devkit" "18.0.4" + ejs "^3.1.7" + enquirer "~2.3.6" + ignore "^5.0.4" + semver "^7.5.3" + tmp "~0.2.1" + tslib "^2.3.0" + yargs-parser "21.1.1" + +"@nx/nx-darwin-arm64@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.0.4.tgz#c199b44ee21699acb14f6ecbada56ed19af936a3" + integrity sha512-9KJVONxUwdnFHHRNocsg7q5pliOTTfbjlr3rvhLuroV5HeTJFhUipKCQrVEhLy8e4auRdLuSz/HsgpJat3Z2cg== + +"@nx/nx-darwin-x64@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-18.0.4.tgz#859896881930d346afd6397b593f8d436722b80d" + integrity sha512-rFKHjeU0Ngz1R7UJAsbncpqwuFDjUdpcvI783r6s2eP7JoiiwtDBXvDcHiy8Odk0lPYmwDELaFZBhvdENqaDNA== + +"@nx/nx-freebsd-x64@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.0.4.tgz#2f295ff841e38f720aa9761e2c9eda90e372b380" + integrity sha512-jJx47wgRoUxVpQ+WG5+yLdxtJVuVgjphiTMRc0LOfUwKQaEHWyCA0hMK5fNmo0FAHIhGVCb/j2j9FxnCWTWpkg== + +"@nx/nx-linux-arm-gnueabihf@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.0.4.tgz#7ceb5531887996f4cf5e9ebda8dab34421d3a061" + integrity sha512-C3qWbFhEMIdTzvAHlIUHecZN3YBu7bx3S0p3gPNGmEMUMbYHP2zMlimBrZIbAxzntyGqWCqhXiFB21QhJ0t1Dw== + +"@nx/nx-linux-arm64-gnu@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.0.4.tgz#cfda70cedab2f3a7c5a9bb11ad4be180993b68c8" + integrity sha512-PxVMh9ikp8Q3hKagb66FAsek8O/08GcMF5dXBH7xc5AiQMaZ6Az/gAXOeHp274nmu3StQEpl9Il/YH6Z9f4V0w== + +"@nx/nx-linux-arm64-musl@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.0.4.tgz#1ce43e4803d3d5b3aeefa43ec54df7501b04a0b7" + integrity sha512-Iz7Z4h2/dXJJvBcyeRHa+d3Ncc4Qz+OiGm6iRDXv4zjFm5EyC1tkSZIFNlNiRjmTToNHFr4savrCjCh8wRYejw== + +"@nx/nx-linux-x64-gnu@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.0.4.tgz#0981787e067d6dd7e3f4f457eb3e24c9b12dccaa" + integrity sha512-BVLkegIwxHnEB64VBraBxyC01D3C3dVNxq2b4iNaqr4mpWNmos+G/mvcTU3NS7W8ZjpBjlXgdEkpgkl2hMKTEA== + +"@nx/nx-linux-x64-musl@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.0.4.tgz#d2857870922ee76ed9f50763ec8bd3c6244c998a" + integrity sha512-WgVy41psjCE9uxjFi4P62UrWyKQ1e2IN2FZaIuwXEB9h8OU/+g9PFpL1Cs1llNoEKnapKXX4+9b5FHF9i7EKQw== + +"@nx/nx-win32-arm64-msvc@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.0.4.tgz#92c76b7b0e1616c273a231afc0f23f1a5e68f655" + integrity sha512-YoxhOrVKnS+kcNTnCg9M61cbigzGErYgnlI8kdZzH2ArD7mhv8bfZnSZUInf5Y8oDBVpKusel7AkCSofzSwigA== + +"@nx/nx-win32-x64-msvc@18.0.4": + version "18.0.4" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.0.4.tgz#c57cbb5e42b10322cb966270a32a2f7869634186" + integrity sha512-FdAdl5buvtUXp8hZVRkK0AZeiCu35l0u+yHsulNViYdh3OXRT1hYJ0CeqpxlLfvbHqB9JzDPtJtG0dpKHH/O0Q== + +"@octokit/auth-token@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" + integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== -"@octokit/core@^3.5.1": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" +"@octokit/core@^4.2.1": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" + integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" before-after-hook "^2.2.0" universal-user-agent "^6.0.0" -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== +"@octokit/endpoint@^7.0.0": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" + integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== +"@octokit/graphql@^5.0.0": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" + "@octokit/request" "^6.0.0" + "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== +"@octokit/openapi-types@^18.0.0": + version "18.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" + integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== -"@octokit/plugin-enterprise-rest@^6.0.1": +"@octokit/plugin-enterprise-rest@6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^2.16.8": - version "2.21.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== +"@octokit/plugin-paginate-rest@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" + integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== dependencies: - "@octokit/types" "^6.40.0" + "@octokit/tsconfig" "^1.0.2" + "@octokit/types" "^9.2.3" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.16.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== +"@octokit/plugin-rest-endpoint-methods@^7.1.2": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz#37a84b171a6cb6658816c82c4082ac3512021797" + integrity sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA== dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" + "@octokit/types" "^10.0.0" -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== +"@octokit/request-error@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== +"@octokit/request@^6.0.0": + version "6.2.8" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" + integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" + "@octokit/endpoint" "^7.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^18.1.0": - version "18.12.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== +"@octokit/rest@19.0.11": + version "19.0.11" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.11.tgz#2ae01634fed4bd1fca5b642767205ed3fd36177c" + integrity sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw== dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" + "@octokit/core" "^4.2.1" + "@octokit/plugin-paginate-rest" "^6.1.2" "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" + "@octokit/plugin-rest-endpoint-methods" "^7.1.2" + +"@octokit/tsconfig@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" + integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.41.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== +"@octokit/types@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-10.0.0.tgz#7ee19c464ea4ada306c43f1a45d444000f419a4a" + integrity sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg== dependencies: - "@octokit/openapi-types" "^12.11.0" + "@octokit/openapi-types" "^18.0.0" + +"@octokit/types@^9.0.0", "@octokit/types@^9.2.3": + version "9.3.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" + integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== + dependencies: + "@octokit/openapi-types" "^18.0.0" "@panva/hkdf@^1.0.2": version "1.1.1" resolved "https://registry.yarnpkg.com/@panva/hkdf/-/hkdf-1.1.1.tgz#ab9cd8755d1976e72fc77a00f7655a64efe6cd5d" integrity sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA== -"@rollup/plugin-alias@^3.1.1": - version "3.1.9" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz#a5d267548fe48441f34be8323fb64d1d4a1b3fdf" - integrity sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw== - dependencies: - slash "^3.0.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@rollup/plugin-babel@^5.2.2": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== -"@rollup/plugin-commonjs@^17.0.0": - version "17.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" - integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" +"@rollup/rollup-android-arm-eabi@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" + integrity sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w== -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" +"@rollup/rollup-android-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz#3822e929f415627609e53b11cec9a4be806de0e2" + integrity sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ== -"@rollup/plugin-node-resolve@^11.0.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" +"@rollup/rollup-darwin-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz#6c082de71f481f57df6cfa3701ab2a7afde96f69" + integrity sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ== -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" +"@rollup/rollup-darwin-x64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz#c34ca0d31f3c46a22c9afa0e944403eea0edcfd8" + integrity sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg== -"@rollup/pluginutils@^4.1.2": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" +"@rollup/rollup-linux-arm-gnueabihf@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz#48e899c1e438629c072889b824a98787a7c2362d" + integrity sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA== + +"@rollup/rollup-linux-arm64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz#788c2698a119dc229062d40da6ada8a090a73a68" + integrity sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA== + +"@rollup/rollup-linux-arm64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7" + integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ== + +"@rollup/rollup-linux-riscv64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz#0c6ad792e1195c12bfae634425a3d2aa0fe93ab7" + integrity sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw== + +"@rollup/rollup-linux-x64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz#9d62485ea0f18d8674033b57aa14fb758f6ec6e3" + integrity sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA== + +"@rollup/rollup-linux-x64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz#50e8167e28b33c977c1f813def2b2074d1435e05" + integrity sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw== + +"@rollup/rollup-win32-arm64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz#68d233272a2004429124494121a42c4aebdc5b8e" + integrity sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw== + +"@rollup/rollup-win32-ia32-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz#366ca62221d1689e3b55a03f4ae12ae9ba595d40" + integrity sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA== + +"@rollup/rollup-win32-x64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz#9ffdf9ed133a7464f4ae187eb9e1294413fab235" + integrity sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg== "@rushstack/eslint-patch@^1.1.3", "@rushstack/eslint-patch@^1.3.3": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" - integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== + version "1.7.2" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9" + integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== dependencies: "@hapi/hoek" "^9.0.0" @@ -2967,34 +2649,102 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== +"@sigstore/bundle@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" + integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + +"@sigstore/bundle@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.2.0.tgz#e3f555a5c503fe176d8d1e0e829b00f842502e46" + integrity sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ== + dependencies: + "@sigstore/protobuf-specs" "^0.3.0" + +"@sigstore/core@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.0.0.tgz#0fcdb32d191d4145a70cb837061185353b3b08e3" + integrity sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw== + +"@sigstore/protobuf-specs@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== + +"@sigstore/protobuf-specs@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.0.tgz#bdcc773671f625bb81591bca86ec5314d57297f3" + integrity sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA== + +"@sigstore/sign@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" + integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + make-fetch-happen "^11.0.1" + +"@sigstore/sign@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.2.3.tgz#f07bcd2cfee654fade867db44ae260f1a0142ba4" + integrity sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw== + dependencies: + "@sigstore/bundle" "^2.2.0" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.0" + make-fetch-happen "^13.0.0" + +"@sigstore/tuf@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" + integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + tuf-js "^1.1.7" + +"@sigstore/tuf@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.1.tgz#86ff3c3c907e271696c88de0108d9063a8cbcc45" + integrity sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q== + dependencies: + "@sigstore/protobuf-specs" "^0.3.0" + tuf-js "^2.2.0" + +"@sigstore/verify@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.1.0.tgz#ab617c5dc0bc09ead7f101a848f4870af2d84374" + integrity sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg== + dependencies: + "@sigstore/bundle" "^2.2.0" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.0" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@surma/rollup-plugin-off-main-thread@^2.2.2": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: - ejs "^3.1.6" - json5 "^2.2.0" - magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" + "@sinonjs/commons" "^3.0.0" "@swc/helpers@0.4.11": version "0.4.11" @@ -3022,21 +2772,14 @@ resolved "https://registry.yarnpkg.com/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz#9ffd52fee8e3c8b20623ff0dcb29e5c21fb0a9ba" integrity sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ== -"@tailwindcss/forms@^0.4.0": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.4.1.tgz#5a47ccd60490cbba84e662f2b9cf3d71a5126d17" - integrity sha512-gS9xjCmJjUBz/eP12QlENPLnf0tCx68oYE3mri0GMP5jdtVwLbGUNSRpjsp6NzLAZzZy3ueOwrcqB78Ax6Z84A== - dependencies: - mini-svg-data-uri "^1.2.3" - -"@tailwindcss/forms@^0.5.2": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.6.tgz#29c6c2b032b363e0c5110efed1499867f6d7e868" - integrity sha512-Fw+2BJ0tmAwK/w01tEFL5TiaJBX1NLT1/YbWgvm7ws3Qcn11kiXxzNTEQDMs5V3mQemhB56l3u0i9dwdzSQldA== +"@tailwindcss/forms@^0.5.2", "@tailwindcss/forms@^0.5.6": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.7.tgz#db5421f062a757b5f828bc9286ba626c6685e821" + integrity sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw== dependencies: mini-svg-data-uri "^1.2.3" -"@tailwindcss/typography@^0.5.1", "@tailwindcss/typography@^0.5.2", "@tailwindcss/typography@^0.5.8": +"@tailwindcss/typography@^0.5.1", "@tailwindcss/typography@^0.5.10", "@tailwindcss/typography@^0.5.2": version "0.5.10" resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.10.tgz#2abde4c6d5c797ab49cf47610830a301de4c1e0a" integrity sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw== @@ -3059,6 +2802,18 @@ "@tanstack/query-core" "4.36.1" use-sync-external-store "^1.2.0" +"@tanstack/react-virtual@^3.0.0-beta.60": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.1.2.tgz#eb62b73cc82e34860604cd3d682a17db590f3c45" + integrity sha512-qibmxtctgOZo2I+3Rw5GR9kXgaa15U5r3/idDY1ItUKW15UK7GhCfyIfE6qYuJ1fxQF6dJDsD8SbpPyuJgpxuA== + dependencies: + "@tanstack/virtual-core" "3.1.2" + +"@tanstack/virtual-core@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.1.2.tgz#ca76f28f826fbd3310f88c3cd355d9c4aba80abb" + integrity sha512-DATZJs8iejkIUqXZe6ruDAnjFo78BKnIIgqQZrc7CmEFqfLEN/TPD91n4hRfo6hpRB6xC00bwKxv7vdjFNEmOg== + "@testing-library/cypress@^8.0.7": version "8.0.7" resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-8.0.7.tgz#18315eba3cf8852808afadf122e4858406384015" @@ -3081,15 +2836,10 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tsconfig/node10@^1.0.7": version "1.0.9" @@ -3111,15 +2861,41 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@tufjs/canonical-json@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" + integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== + +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + +"@tufjs/models@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" + integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== + dependencies: + "@tufjs/canonical-json" "1.0.0" + minimatch "^9.0.0" + +"@tufjs/models@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.0.tgz#c7ab241cf11dd29deb213d6817dabb8c99ce0863" + integrity sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.3" + "@types/aria-query@^5.0.1": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.3.tgz#07570ebd25f9b516c910a91f7244052c9b58eabc" - integrity sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA== + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" - integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -3128,90 +2904,85 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.6" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" - integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" - integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" - integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== dependencies: "@babel/types" "^7.20.7" -"@types/estree@*": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" - integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/graceful-fs@^4.1.2": - version "4.1.8" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" - integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" "@types/hast@^2.0.0": - version "2.3.7" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.7.tgz#5e9bd7ab4452d5313aeec9d38fbc193a70f8d810" - integrity sha512-EVLigw5zInURhzfXUM65eixfadfsHKomGKUakToXo84t8gGIJuTcD2xooM2See7GyQ7DRtYjhCHnSUQez8JaLw== + version "2.3.10" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643" + integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== dependencies: "@types/unist" "^2" "@types/hoist-non-react-statics@^3.3.1": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.4.tgz#cc477ce0283bb9d19ea0cbfa2941fe2c8493a1be" - integrity sha512-ZchYkbieA+7tnxwX/SCBySx9WwvWR8TaP5tb2jRAzwvLb/rWchGw3v0w3pqUbUvj0GCwW2Xz/AVPSk6kUGctXQ== + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" + integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" - integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" - integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" - integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^27.5.2": - version "27.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" - integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== +"@types/jest@^29.5.12": + version "29.5.12" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" -"@types/json-schema@^7.0.9": - version "7.0.14" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" - integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" @@ -3219,14 +2990,14 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.175": - version "4.14.200" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.200.tgz#435b6035c7eba9cdf1e039af8212c9e9281e7149" - integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== + version "4.14.202" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.14.tgz#0735473a5b35be032b9f2685b7413cbab1b8a639" - integrity sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw== + version "3.0.15" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" + integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== dependencies: "@types/unist" "^2" @@ -3236,94 +3007,67 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.4.tgz#81f886786411c45bba3f33e781ab48bd56bfca2e" - integrity sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== -"@types/node@*": - version "20.8.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" - integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== +"@types/node@*", "@types/node@^20.10.0", "@types/node@^20.11.19": + version "20.11.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" + integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== dependencies: - undici-types "~5.25.1" - -"@types/node@20.5.1": - version "20.5.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.1.tgz#178d58ee7e4834152b0e8b4d30cbfab578b9bb30" - integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg== + undici-types "~5.26.4" "@types/node@^14.14.31": version "14.18.63" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== -"@types/node@^17.0.21", "@types/node@^17.0.23", "@types/node@^17.0.45": +"@types/node@^17.0.21", "@types/node@^17.0.23": version "17.0.45" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== -"@types/node@^18.11.10": - version "18.18.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.6.tgz#26da694f75cdb057750f49d099da5e3f3824cb3e" - integrity sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w== - "@types/normalize-package-data@^2.4.0": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz#291c243e4b94dbfbc0c0ee26b7666f1d5c030e2c" - integrity sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg== - -"@types/parse-json@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.1.tgz#27f7559836ad796cea31acb63163b203756a5b4e" - integrity sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng== + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/parse5@^5.0.0": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== -"@types/prettier@^2.1.5": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - "@types/prop-types@*": - version "15.7.9" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" - integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== -"@types/react-dom@17.0.21", "@types/react-dom@^17.0.21", "@types/react-dom@^18.0.9": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.21.tgz#85d56965483ce4850f5f03f9234e54a1f47786e5" - integrity sha512-3rQEFUNUUz2MYiRwJJj6UekcW7rFLOtmK7ajQP7qJpjNdggInl3I/xM4I3Hq1yYPdCGVMgax1gZsB7BBTtayXg== +"@types/react-dom@17.0.25", "@types/react-dom@^17.0.25", "@types/react-dom@^18.2.17": + version "17.0.25" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.25.tgz#e0e5b3571e1069625b3a3da2b279379aa33a0cb5" + integrity sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA== dependencies: "@types/react" "^17" -"@types/react@*", "@types/react@17.0.68", "@types/react@^17", "@types/react@^17.0.0", "@types/react@^17.0.43", "@types/react@^17.0.68", "@types/react@^18.0.26": - version "17.0.68" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.68.tgz#99b17f567e258f5e7be855a281ac67b49a34f9f2" - integrity sha512-y8heXejd/Gi43S28GOqIFmr6BzhLa3anMlPojRu4rHh3MtRrrpB+BtLEcqP3XPO1urXByzBdkOLU7sodYWnpkA== +"@types/react@*", "@types/react@17.0.75", "@types/react@^17", "@types/react@^17.0.0", "@types/react@^17.0.43", "@types/react@^17.0.75", "@types/react@^18.2.39": + version "17.0.75" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.75.tgz#cffbc76840a12fcadaf5a3cf14878bb06efcf73d" + integrity sha512-MSA+NzEzXnQKrqpO63CYqNstFjsESgvJAdAyyJ1n6ZQq/GLgf6nOfIKwk+Twuz0L1N6xPe+qz5xRCJrbhMaLsw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - "@types/scheduler@*": - version "0.16.5" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" - integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/semver@^7.3.12": - version "7.5.4" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" - integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== +"@types/semver@^7.5.0": + version "7.5.7" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.7.tgz#326f5fdda70d13580777bcaa1bc6fa772a5aef0e" + integrity sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg== "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" @@ -3331,56 +3075,57 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": - version "2.3.5" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.5.tgz#d93dd29cdcd5801d90be968073b09a6b370780e4" - integrity sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ== + version "2.3.8" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" + integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== "@types/stack-utils@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" - integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.9.tgz#72e164381659a49557b0a078b28308f2c6a3e1ce" - integrity sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ== + version "2.0.10" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" + integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== "@types/yargs-parser@*": - version "21.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" - integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== -"@types/yargs@^16.0.0": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" - integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.10.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.2.tgz#dab926ef9b41a898bc943f11bca6b0bad6d4b729" - integrity sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA== + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" +"@typescript-eslint/eslint-plugin@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.2.tgz#c13a34057be425167cc4a765158c46fdf2fd981d" + integrity sha512-/XtVZJtbaphtdrWjr+CJclaCVGPtOdBpFEnvtNf/jRV0IiEemRrL0qABex/nEt8isYcnFacm3nPHYQwL+Wb7qg== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "7.0.2" + "@typescript-eslint/type-utils" "7.0.2" + "@typescript-eslint/utils" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.21.0", "@typescript-eslint/parser@^5.62.0": +"@typescript-eslint/parser@^5.21.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -3391,14 +3136,25 @@ debug "^4.3.4" "@typescript-eslint/parser@^5.4.2 || ^6.0.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb" - integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg== + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.0.2.tgz#95c31233d343db1ca1df8df7811b5b87ca7b1a68" + integrity sha512-GdwfDglCxSmU+QTS9vhz2Sop46ebNCXpPPvsByK7hu0rFGRHL+AusKQJ7SoN+LbLh6APFpQwHKmDSwN35Z700Q== dependencies: - "@typescript-eslint/scope-manager" "6.8.0" - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/typescript-estree" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/scope-manager" "7.0.2" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/typescript-estree" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -3409,33 +3165,46 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" - integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== +"@typescript-eslint/scope-manager@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.0.2.tgz#6ec4cc03752758ddd1fdaae6fbd0ed9a2ca4fe63" + integrity sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g== dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" + +"@typescript-eslint/type-utils@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.0.2.tgz#a7fc0adff0c202562721357e7478207d380a757b" + integrity sha512-IKKDcFsKAYlk8Rs4wiFfEwJTQlHcdn8CLwLaxwd6zb8HNiMcQIFX9sWax2k4Cjj7l7mGS5N1zl7RCHOVwHq2VQ== + dependencies: + "@typescript-eslint/typescript-estree" "7.0.2" + "@typescript-eslint/utils" "7.0.2" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" - integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/types@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.0.2.tgz#b6edd108648028194eb213887d8d43ab5750351c" + integrity sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -3450,32 +3219,46 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" - integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg== +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== dependencies: - "@typescript-eslint/types" "6.8.0" - "@typescript-eslint/visitor-keys" "6.8.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" + minimatch "9.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== +"@typescript-eslint/typescript-estree@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.2.tgz#3c6dc8a3b9799f4ef7eca0d224ded01974e4cb39" + integrity sha512-3AMc8khTcELFWcKcPc0xiLviEvvfzATpdPj/DXuOGIdQIIFybf4DMT1vKRbuAEOFMwhWt7NFLXRkbjsvKZQyvw== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/visitor-keys" "7.0.2" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.0.2.tgz#8756123054cd934c8ba7db6a6cffbc654b10b5c4" + integrity sha512-PZPIONBIB/X684bhT1XlrkjNZJIEevwkKDsdwfiu1WeqBxYEEdIgVDgm8/bbKHVu+6YOpeRqcfImTdImx/4Bsw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "7.0.2" + "@typescript-eslint/types" "7.0.2" + "@typescript-eslint/typescript-estree" "7.0.2" + semver "^7.5.4" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -3485,20 +3268,53 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.8.0": - version "6.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" - integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg== +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== dependencies: - "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.2.tgz#2899b716053ad7094962beb895d11396fc12afc7" + integrity sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ== + dependencies: + "@typescript-eslint/types" "7.0.2" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@vercel/analytics@^0.1.3": version "0.1.11" resolved "https://registry.yarnpkg.com/@vercel/analytics/-/analytics-0.1.11.tgz#727a0ac655a4a89104cdea3e6925476470299428" integrity sha512-mj5CPR02y0BRs1tN3oZcBNAX9a8NxsIUl9vElDPcqxnMfP0RbRc9fI9Ud7+QDg/1Izvt5uMumsr+6YsmVHcyuw== -JSONStream@^1.0.4, JSONStream@^1.3.5: +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@3.0.0-rc.46": + version "3.0.0-rc.46" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz#03f8363111efc0ea670e53b0282cd3ef62de4e01" + integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + +JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -3506,55 +3322,25 @@ JSONStream@^1.0.4, JSONStream@^1.3.5: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: - version "0.12.4" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410" - integrity sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA== - dependencies: - xtend "~3.0.0" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== add-stream@^1.0.0: version "1.0.0" @@ -3568,7 +3354,14 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" -agentkeepalive@^4.1.3: +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + +agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== @@ -3583,7 +3376,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3604,24 +3397,24 @@ ajv@^8.11.0: uri-js "^4.2.2" algoliasearch@^4.19.1: - version "4.20.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.20.0.tgz#700c2cb66e14f8a288460036c7b2a554d0d93cf4" - integrity sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g== - dependencies: - "@algolia/cache-browser-local-storage" "4.20.0" - "@algolia/cache-common" "4.20.0" - "@algolia/cache-in-memory" "4.20.0" - "@algolia/client-account" "4.20.0" - "@algolia/client-analytics" "4.20.0" - "@algolia/client-common" "4.20.0" - "@algolia/client-personalization" "4.20.0" - "@algolia/client-search" "4.20.0" - "@algolia/logger-common" "4.20.0" - "@algolia/logger-console" "4.20.0" - "@algolia/requester-browser-xhr" "4.20.0" - "@algolia/requester-common" "4.20.0" - "@algolia/requester-node-http" "4.20.0" - "@algolia/transporter" "4.20.0" + version "4.22.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" + integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== + dependencies: + "@algolia/cache-browser-local-storage" "4.22.1" + "@algolia/cache-common" "4.22.1" + "@algolia/cache-in-memory" "4.22.1" + "@algolia/client-account" "4.22.1" + "@algolia/client-analytics" "4.22.1" + "@algolia/client-common" "4.22.1" + "@algolia/client-personalization" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/logger-console" "4.22.1" + "@algolia/requester-browser-xhr" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/requester-node-http" "4.22.1" + "@algolia/transporter" "4.22.1" ansi-align@^2.0.0: version "2.0.0" @@ -3649,6 +3442,13 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" +ansi-escapes@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" + integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== + dependencies: + type-fest "^3.0.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -3669,6 +3469,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -3693,6 +3498,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -3706,12 +3516,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -aproba@^2.0.0: +"aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== @@ -3721,13 +3526,13 @@ arch@^2.2.0: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" - readable-stream "^2.0.6" + readable-stream "^3.6.0" arg@^4.1.0: version "4.1.3" @@ -3758,20 +3563,20 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^5.1.3: +aria-query@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" + call-bind "^1.0.5" + is-array-buffer "^3.0.4" array-differ@^3.0.0: version "3.0.0" @@ -3783,7 +3588,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.6: +array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== @@ -3799,18 +3604,29 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== +array.prototype.filter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" + integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -array.prototype.flat@^1.3.1: +array.prototype.findlastindex@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" + integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -3820,7 +3636,7 @@ array.prototype.flat@^1.3.1: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1: +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== @@ -3830,39 +3646,29 @@ array.prototype.flatmap@^1.3.1: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" - integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.0" + es-shim-unscopables "^1.0.2" -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" arrify@^1.0.1: @@ -3880,16 +3686,6 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -3902,10 +3698,10 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== astral-regex@^2.0.0: version "2.0.0" @@ -3913,9 +3709,9 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async@^3.2.0, async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynciterator.prototype@^1.0.0: version "1.0.0" @@ -3929,32 +3725,29 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -asyncro@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" - integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== - at-least-node@^1.0.0: version "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.1.0, autoprefixer@^10.4.13, autoprefixer@^10.4.2, autoprefixer@^10.4.4, autoprefixer@^10.4.7: - version "10.4.16" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" - integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== +autoprefixer@^10.4.16, autoprefixer@^10.4.2, autoprefixer@^10.4.4, autoprefixer@^10.4.7: + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== dependencies: - browserslist "^4.21.10" - caniuse-lite "^1.0.30001538" - fraction.js "^4.3.6" + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" aws-sign2@~0.7.0: version "0.7.0" @@ -3966,10 +3759,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axe-core@^4.6.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" - integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== axios@^0.27.2: version "0.27.2" @@ -3979,7 +3772,16 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -axobject-query@^3.1.1: +axios@^1.6.0: + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== + dependencies: + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== @@ -3995,16 +3797,15 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" + babel-preset-jest "^29.6.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -4035,60 +3836,39 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" - integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== +babel-plugin-polyfill-corejs2@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" + "@babel/helper-define-polyfill-provider" "^0.5.0" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" - integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.32.2" - -babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" - integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== +babel-plugin-polyfill-corejs3@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" + integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" + "@babel/helper-define-polyfill-provider" "^0.5.0" + core-js-compat "^3.34.0" -babel-plugin-transform-async-to-promises@^0.8.18: - version "0.8.18" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz#f4dc5980b8afa0fc9c784b8d931afde913413e39" - integrity sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw== - -babel-plugin-transform-replace-expressions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz#59cba8df4b4a675e7c78cd21548f8e7685bbc30d" - integrity sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA== +babel-plugin-polyfill-regenerator@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== dependencies: - "@babel/parser" "^7.3.3" + "@babel/helper-define-polyfill-provider" "^0.5.0" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -4108,12 +3888,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: - babel-plugin-jest-hoist "^27.5.1" + babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" bail@^1.0.0: @@ -4148,7 +3928,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.0.3: +bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -4157,13 +3937,6 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -bl@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" - integrity sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw== - dependencies: - readable-stream "~1.0.26" - blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -4174,21 +3947,6 @@ bluebird@3.7.2, bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" @@ -4238,94 +3996,14 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -brotli-size@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" - integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== - dependencies: - duplexer "0.1.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-fs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f" - integrity sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg== - dependencies: - level-filesystem "^1.0.1" - level-js "^2.1.3" - levelup "^0.18.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" - integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== +browserslist@^4.22.2, browserslist@^4.22.3: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - caniuse-lite "^1.0.30001541" - electron-to-chromium "^1.4.535" - node-releases "^2.0.13" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" update-browserslist-db "^1.0.13" bs-logger@0.x: @@ -4347,21 +4025,11 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -buffer-es6@^4.9.2: - version "4.9.3" - resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" - integrity sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -4370,16 +4038,25 @@ buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== +builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + +bundle-require@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.2.tgz#65fc74ff14eabbba36d26c9a6161bd78fff6b29e" + integrity sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag== + dependencies: + load-tsconfig "^0.2.3" + busboy@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" @@ -4387,39 +4064,51 @@ busboy@1.6.0: dependencies: streamsearch "^1.1.0" -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== - -byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" +byte-size@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" + integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== + +cac@^6.7.12: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +cacache@^17.0.0: + version "17.1.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" minipass-collect "^1.0.2" minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" + minipass-pipeline "^1.2.4" p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacache@^18.0.0: + version "18.0.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.2.tgz#fd527ea0f03a603be5c0da5805635f8eef00c60c" + integrity sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" cacheable-request@^6.0.0: version "6.1.0" @@ -4439,13 +4128,16 @@ cachedir@^2.3.0: resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" @@ -4481,20 +4173,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001551" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" - integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== +caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== capture-stack-trace@^1.0.0: version "1.0.2" @@ -4511,7 +4193,20 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@^1.0.0, chalk@^1.1.3: +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== @@ -4539,7 +4234,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4577,10 +4272,10 @@ check-more-types@2.24.0, check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== +chokidar@^3.5.1, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -4592,7 +4287,7 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1, chownr@^1.1.4: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -4612,28 +4307,20 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0: +ci-info@^3.2.0, ci-info@^3.6.1: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== classnames@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== clean-stack@^2.0.0: version "2.2.0" @@ -4650,13 +4337,30 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-cursor@^3.1.0: +cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + cli-table3@~0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" @@ -4674,6 +4378,14 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -4711,7 +4423,7 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: +clone-deep@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== @@ -4737,11 +4449,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clone@~0.1.9: - version "0.1.19" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" - integrity sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw== - clsx@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" @@ -4752,23 +4459,16 @@ cluster-key-slot@^1.1.0: resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== -cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== - dependencies: - mkdirp-infer-owner "^2.0.0" +cmd-shim@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" + integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -4811,6 +4511,11 @@ color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + color@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" @@ -4819,17 +4524,12 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.16: +colorette@^2.0.16, colorette@^2.0.20: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -columnify@^1.5.4: +columnify@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== @@ -4849,7 +4549,12 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.19.0, commander@^2.20.0: +commander@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + +commander@^2.19.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4864,11 +4569,6 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - comment-json@^2.2.0: version "2.4.2" resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-2.4.2.tgz#2111c065864338ad8d98ae01eecde9e02cd2f549" @@ -4884,11 +4584,6 @@ common-tags@^1.8.0: resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -4902,16 +4597,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.4.4: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -4922,21 +4607,6 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -concat-with-sourcemaps@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" - integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== - dependencies: - source-map "^0.6.1" - -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - configstore@^3.0.0: version "3.1.5" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f" @@ -4961,92 +4631,67 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-angular@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz#a9a9494c28b7165889144fd5b91573c4aa9ca541" - integrity sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg== +conventional-changelog-angular@7.0.0, conventional-changelog-angular@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== dependencies: compare-func "^2.0.0" -conventional-changelog-conventionalcommits@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz#3bad05f4eea64e423d3d90fc50c17d2c8cf17652" - integrity sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw== +conventional-changelog-conventionalcommits@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" + integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== dependencies: compare-func "^2.0.0" -conventional-changelog-core@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" - integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== +conventional-changelog-core@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz#3c331b155d5b9850f47b4760aeddfc983a92ad49" + integrity sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== dependencies: add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" + conventional-changelog-writer "^6.0.0" + conventional-commits-parser "^4.0.0" + dateformat "^3.0.3" + get-pkg-repo "^4.2.1" + git-raw-commits "^3.0.0" git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" + git-semver-tags "^5.0.0" + normalize-package-data "^3.0.3" read-pkg "^3.0.0" read-pkg-up "^3.0.0" - through2 "^4.0.0" -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== +conventional-changelog-preset-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz#14975ef759d22515d6eabae6396c2ae721d4c105" + integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== -conventional-changelog-writer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" - integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== +conventional-changelog-writer@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz#d8d3bb5e1f6230caed969dcc762b1c368a8f7b01" + integrity sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ== dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" + conventional-commits-filter "^3.0.0" + dateformat "^3.0.3" handlebars "^4.7.7" json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.2.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" + meow "^8.1.2" + semver "^7.0.0" + split "^1.0.1" + +conventional-commits-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz#bf1113266151dd64c49cd269e3eb7d71d7015ee2" + integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.1" conventional-commits-parser@^4.0.0: version "4.0.0" @@ -5058,21 +4703,30 @@ conventional-commits-parser@^4.0.0: meow "^8.1.2" split2 "^3.2.2" -conventional-recommended-bump@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== +conventional-commits-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" + integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== + dependencies: + JSONStream "^1.3.5" + is-text-path "^2.0.0" + meow "^12.0.1" + split2 "^4.0.0" + +conventional-recommended-bump@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz#ec01f6c7f5d0e2491c2d89488b0d757393392424" + integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== dependencies: concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" + conventional-changelog-preset-loader "^3.0.0" + conventional-commits-filter "^3.0.0" + conventional-commits-parser "^4.0.0" + git-raw-commits "^3.0.0" + git-semver-tags "^5.0.0" + meow "^8.1.2" -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -5094,17 +4748,17 @@ copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== +core-js-compat@^3.31.0, core-js-compat@^3.34.0: + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" + integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== dependencies: - browserslist "^4.22.1" + browserslist "^4.22.3" core-js@^3: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" - integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.0.tgz#e752fa0b0b462a0787d56e9d73f80b0f7c0dde68" + integrity sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== core-util-is@1.0.2: version "1.0.2" @@ -5116,23 +4770,14 @@ core-util-is@^1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig-typescript-loader@^4.0.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz#f3feae459ea090f131df5474ce4b1222912319f9" - integrity sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw== - -cosmiconfig@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== +cosmiconfig-typescript-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz#0d3becfe022a871f7275ceb2397d692e06045dc8" + integrity sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA== dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" + jiti "^1.19.1" -cosmiconfig@^8.0.0: +cosmiconfig@^8.2.0, cosmiconfig@^8.3.6: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -5142,14 +4787,6 @@ cosmiconfig@^8.0.0: parse-json "^5.2.0" path-type "^4.0.0" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -5157,28 +4794,18 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" create-require@^1.1.0: version "1.1.1" @@ -5210,23 +4837,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" @@ -5237,117 +4847,15 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "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.1: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== cypress@^9.7.0: version "9.7.0" @@ -5414,16 +4922,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -dateformat@^3.0.0: +dateformat@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== @@ -5433,7 +4932,7 @@ dayjs@^1.10.4: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5447,11 +4946,6 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -5465,16 +4959,6 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decimal.js@^10.2.1: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -5489,20 +4973,25 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -dedent@^0.7.0: +dedent@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + deep-equal@^2.0.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" - integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== dependencies: array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" + call-bind "^1.0.5" es-get-iterator "^1.1.3" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" is-arguments "^1.1.1" is-array-buffer "^3.0.2" is-date-object "^1.0.5" @@ -5512,11 +5001,11 @@ deep-equal@^2.0.5: object-is "^1.1.5" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" + regexp.prototype.flags "^1.5.1" side-channel "^1.0.4" which-boxed-primitive "^1.0.2" which-collection "^1.0.1" - which-typed-array "^1.1.9" + which-typed-array "^1.1.13" deep-extend@^0.6.0: version "0.6.0" @@ -5545,28 +5034,21 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -deferred-leveldown@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" - integrity sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng== - dependencies: - abstract-leveldown "~0.12.1" - -define-data-property@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: - get-intrinsic "^1.2.1" + es-define-property "^1.0.0" + es-errors "^1.3.0" gopd "^1.0.1" - has-property-descriptors "^1.0.0" define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -5590,7 +5072,7 @@ denque@^2.1.0: resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== @@ -5600,14 +5082,6 @@ dequal@^2.0.3: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - detab@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" @@ -5635,7 +5109,7 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -dezalgo@^1.0.0, dezalgo@^1.0.4: +dezalgo@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== @@ -5648,25 +5122,16 @@ didyoumean@^1.2.2: resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5698,15 +5163,6 @@ dom-accessibility-api@^0.5.9: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - dom-serializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" @@ -5716,18 +5172,11 @@ dom-serializer@^2.0.0: domhandler "^5.0.2" entities "^4.2.0" -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: +domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - domhandler@5.0.3, domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" @@ -5735,22 +5184,6 @@ domhandler@5.0.3, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" @@ -5774,18 +5207,21 @@ dot-prop@^5.1.0, dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" +dotenv-expand@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== dotenv@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== +dotenv@~16.3.1: + version "16.3.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.2.tgz#3cb611ce5a63002dbabf7c281bc331f69d28f03f" + integrity sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ== + drupal-jsonapi-params@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/drupal-jsonapi-params/-/drupal-jsonapi-params-1.2.3.tgz#e27676f897732c6093081f45853ec2612f1bd6b8" @@ -5793,7 +5229,7 @@ drupal-jsonapi-params@^1.2.2: dependencies: qs "^6.10.0" -drupal-jsonapi-params@^2.0.0, drupal-jsonapi-params@^2.3.1: +drupal-jsonapi-params@^2.0.0, drupal-jsonapi-params@^2.1.0, drupal-jsonapi-params@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/drupal-jsonapi-params/-/drupal-jsonapi-params-2.3.1.tgz#7e91f9d7aa6b2b0793cf6b51fe19a5ffb9591278" integrity sha512-Isx6dudrFhORCl87OWHHO2LpQIAha5d6n7+/fwngsgcQs4PYeZcmTAA3pKUmvfyyFgCJ0N4fLAJQHyf4jtgiDA== @@ -5805,16 +5241,16 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== -duplexer@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== - -duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5833,35 +5269,27 @@ editorconfig@^0.15.3: semver "^5.6.0" sigmund "^1.0.1" -ejs@^3.1.6: +ejs@^3.1.7: version "3.1.9" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.535: - version "1.4.559" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz#050483c22c5eb2345017a8976a67b060559a33f4" - integrity sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug== +electron-to-chromium@^1.4.668: + version "1.4.677" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.677.tgz#49ee77713516740bdde32ac2d1443c444f0dafe7" + integrity sha512-erDa3CaDzwJOpyvfKhOiJjBVNnMM0qxHq47RheVVwsSQrgBA9ZSGV9kdaOfZDPXcHzhG7lBxhj6A7KvfLJBd6Q== -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== emoji-regex@^7.0.1: version "7.0.3" @@ -5878,7 +5306,7 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -encoding@^0.1.12: +encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -5908,10 +5336,12 @@ enquirer@^2.3.6: ansi-colors "^4.1.1" strip-ansi "^6.0.1" -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" entities@^4.2.0, entities@^4.5.0: version "4.5.0" @@ -5923,23 +5353,16 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -envinfo@^7.7.4: - version "7.10.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" - integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== +envinfo@7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -errno@^0.1.1, errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -5947,56 +5370,70 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.22.4: + version "1.22.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.4.tgz#26eb2e7538c3271141f5754d31aabfdb215f27bf" + integrity sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.6" + call-bind "^1.0.7" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.2" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" - get-symbol-description "^1.0.0" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" + hasown "^2.0.1" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.12" + is-typed-array "^1.1.13" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.0" + safe-regex-test "^1.0.3" string.prototype.trim "^1.2.8" string.prototype.trimend "^1.0.7" string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" + typed-array-buffer "^1.0.1" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.14" es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.0.0, es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-get-iterator@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" @@ -6012,41 +5449,42 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.12: - version "1.0.15" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.17" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz#123d1315780df15b34eb181022da43e734388bb8" + integrity sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ== dependencies: asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" + call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" + es-abstract "^1.22.4" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" globalthis "^1.0.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.5" + internal-slot "^1.0.7" iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" + safe-array-concat "^1.1.0" -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== +es-set-tostringtag@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -6057,10 +5495,39 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +esbuild@^0.19.2: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-goat@^2.0.0: version "2.1.1" @@ -6082,17 +5549,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - eslint-config-next@^12.0.10, eslint-config-next@^12.1.4: version "12.3.4" resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.3.4.tgz#3d4d9e74b919b879c4cc79c61bdc388fb2b964ee" @@ -6108,12 +5564,12 @@ eslint-config-next@^12.0.10, eslint-config-next@^12.1.4: eslint-plugin-react "^7.31.7" eslint-plugin-react-hooks "^4.5.0" -eslint-config-next@^13.0.6: - version "13.5.6" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.5.6.tgz#3a5a6222d5cb32256760ad68ab8e976e866a08c8" - integrity sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg== +eslint-config-next@^14.0.3: + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.0.tgz#7e309d426b8afacaba3b32fdbb02ba220b6d0a97" + integrity sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg== dependencies: - "@next/eslint-plugin-next" "13.5.6" + "@next/eslint-plugin-next" "14.1.0" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" eslint-import-resolver-node "^0.3.6" @@ -6123,12 +5579,12 @@ eslint-config-next@^13.0.6: eslint-plugin-react "^7.33.2" eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" -eslint-config-prettier@^8.10.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7: +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -6176,56 +5632,57 @@ eslint-plugin-cypress@^2.15.1: globals "^13.20.0" eslint-plugin-import@^2.26.0, eslint-plugin-import@^2.28.1: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== - dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" + eslint-import-resolver-node "^0.3.9" eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" semver "^6.3.1" - tsconfig-paths "^3.14.2" + tsconfig-paths "^3.15.0" eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" - integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== - dependencies: - "@babel/runtime" "^7.20.7" - aria-query "^5.1.3" - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - ast-types-flow "^0.0.7" - axe-core "^4.6.2" - axobject-query "^3.1.1" + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.3" - language-tags "=1.0.5" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - semver "^6.3.0" + object.entries "^1.1.7" + object.fromentries "^2.0.7" -eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" eslint-plugin-react-hooks@^4.5.0, "eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": version "4.6.0" @@ -6254,7 +5711,7 @@ eslint-plugin-react@^7.31.7, eslint-plugin-react@^7.33.2: semver "^6.3.1" string.prototype.matchall "^4.0.8" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -6280,18 +5737,19 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.12.0, eslint@^8.28.0, eslint@^8.51.0: - version "8.51.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== +eslint@^8.12.0, eslint@^8.54.0, eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -6361,21 +5819,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -6404,15 +5847,12 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -execa@4.1.0, execa@^4.0.0: +execa@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -6427,6 +5867,21 @@ execa@4.1.0, execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + execa@5.1.1, execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -6442,6 +5897,21 @@ execa@5.1.1, execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -6472,15 +5942,21 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== extend-shallow@^2.0.1: version "2.0.1" @@ -6539,10 +6015,10 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -6550,7 +6026,7 @@ fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -6561,9 +6037,9 @@ fast-levenshtein@^2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -6581,15 +6057,7 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@^1.0.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^3.0.0, figures@^3.2.0: +figures@3.2.0, figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -6610,11 +6078,6 @@ filelist@^1.0.4: dependencies: minimatch "^5.0.1" -filesize@^6.1.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" - integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -6622,20 +6085,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -6667,23 +6116,28 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" - integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.0.tgz#5fdca2b5e671cd38d1537427a10e02a2caa8257e" + integrity sha512-noqGuLw158+DuD9UPRKHpJ2hGxpFyDlYYrfM0mWt4XhT4n0lwzTLh70Tkdyy4kyTmyTT9Bv7bWAJqw7cgkEXDg== -follow-redirects@^1.14.9: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== +follow-redirects@^1.14.9, follow-redirects@^1.15.4: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== for-each@^0.3.3: version "0.3.3" @@ -6692,25 +6146,19 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -foreach@~2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" - integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -6738,7 +6186,7 @@ formidable@^3.2.4: hexoid "^1.0.0" once "^1.4.0" -fraction.js@^4.3.6: +fraction.js@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== @@ -6758,19 +6206,10 @@ fs-exists-sync@^0.1.0: resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== +fs-extra@^11.1.0, fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -6795,20 +6234,20 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -6819,7 +6258,7 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -6839,33 +6278,19 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -fwd-stream@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" - integrity sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg== - dependencies: - readable-stream "~1.0.26-4" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -generic-names@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" - integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: - loader-utils "^3.2.0" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -6877,22 +6302,28 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + +get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + es-errors "^1.3.0" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-pkg-repo@^4.0.0: +get-pkg-repo@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== @@ -6902,11 +6333,16 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" -get-port@^5.1.1: +get-port@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -6931,13 +6367,19 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" get-tsconfig@^4.5.0: version "4.7.2" @@ -6969,7 +6411,7 @@ git-config-path@^1.0.1: fs-exists-sync "^0.1.0" homedir-polyfill "^1.0.0" -git-raw-commits@^2.0.11, git-raw-commits@^2.0.8: +git-raw-commits@^2.0.11: version "2.0.11" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== @@ -6980,6 +6422,15 @@ git-raw-commits@^2.0.11, git-raw-commits@^2.0.8: split2 "^3.0.0" through2 "^4.0.0" +git-raw-commits@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" + integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== + dependencies: + dargs "^7.0.0" + meow "^8.1.2" + split2 "^3.2.2" + git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" @@ -6988,28 +6439,28 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== +git-semver-tags@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-5.0.1.tgz#db748aa0e43d313bf38dcd68624d8443234e1c15" + integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== dependencies: - meow "^8.0.0" - semver "^6.0.0" + meow "^8.1.2" + semver "^7.0.0" -git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: - is-ssh "^1.3.0" - parse-url "^6.0.0" + is-ssh "^1.4.0" + parse-url "^8.1.0" -git-url-parse@^11.4.4: - version "11.6.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" - integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== +git-url-parse@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: - git-up "^4.0.0" + git-up "^7.0.0" git-username@^1.0.0: version "1.0.0" @@ -7036,7 +6487,7 @@ github-slugger@^1.0.0, github-slugger@^1.2.1: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7055,17 +6506,16 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@10.3.10, glob@^10.2.2, glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" glob@7.1.7: version "7.1.7" @@ -7079,7 +6529,7 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -7091,6 +6541,27 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + global-dirs@^0.1.0, global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -7118,9 +6589,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0, globals@^13.20.0: - version "13.23.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" - integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" @@ -7131,12 +6602,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.2, globby@^11.1.0: +globby@11.1.0, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -7148,11 +6614,6 @@ globby@^11.0.2, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -7194,7 +6655,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7214,20 +6675,6 @@ gray-matter@^4.0.2: section-matter "^1.0.0" strip-bom-string "^1.0.0" -gzip-size@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" - integrity sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w== - dependencies: - duplexer "^0.1.1" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -7240,19 +6687,6 @@ handlebars@^4.7.7: optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -7285,31 +6719,31 @@ has-own-prop@^2.0.0: resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.1.1" + es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" -has-unicode@^2.0.0, has-unicode@^2.0.1: +has-unicode@2.0.1, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== @@ -7319,28 +6753,6 @@ has-yarn@^2.1.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -has@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" - integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hasha@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" @@ -7349,6 +6761,13 @@ hasha@^5.2.2: is-stream "^2.0.0" type-fest "^0.8.0" +hasown@^2.0.0, hasown@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -7432,15 +6851,6 @@ highlight-words-core@^1.2.0: resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -7460,6 +6870,13 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -7467,20 +6884,27 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -html-dom-parser@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-5.0.1.tgz#af21fcefa7b68e6e8fdef4e559e0c15915269e6e" - integrity sha512-8MRxHcUjkpfkCEvf3t+r1nO7KCHgfFah23tAskZHgiOFsP5/24uxJnoS6C2Hq+p/cAzpPUiKb8vjywH6ixEgzQ== +hosted-git-info@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== dependencies: - domhandler "5.0.3" - htmlparser2 "9.0.0" + lru-cache "^7.5.1" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +hosted-git-info@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.1.tgz#9985fcb2700467fecf7f33a4d4874e30680b5322" + integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== + dependencies: + lru-cache "^10.0.1" + +html-dom-parser@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-5.0.3.tgz#823ecc15292c36cb1611213384c9eb2fbb085e5c" + integrity sha512-slsc6ipw88OUZjAayRs5NTmfOQCwcUa3hNyk6AdsbQxY09H5Lr1Y3CZ4ZlconMKql3Ga6sWg3HMoUzo7KSItaQ== dependencies: - whatwg-encoding "^1.0.5" + domhandler "5.0.3" + htmlparser2 "9.0.0" html-escaper@^2.0.0: version "2.0.2" @@ -7495,14 +6919,14 @@ html-parse-stringify@^3.0.1: void-elements "3.1.0" html-react-parser@^4.2.6: - version "4.2.6" - resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-4.2.6.tgz#dbc019c61a02daca87aa988cbdffebce0221862b" - integrity sha512-HTV/eN4YmhQCqFKwRz3/RdDP7Q6HPcvwLaJztFPgkFjtgaN+kj4gf1cyOHFjQ8Q8I07BYsUJNhPFhwyPG4bnZg== + version "4.2.10" + resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-4.2.10.tgz#618364ce90b2eb5fa8b80fe359eb553f97aaefa3" + integrity sha512-JyKZVQ+kQ8PdycISwkuLbEEvV/k4hWhU6cb6TT7yGaYwdqA7cPt4VRYXkCZcix2vlQtgDBSMJUmPI2jpNjPGvg== dependencies: domhandler "5.0.3" - html-dom-parser "5.0.1" - react-property "2.0.0" - style-to-js "1.1.6" + html-dom-parser "5.0.3" + react-property "2.0.2" + style-to-js "1.1.8" html-void-elements@^1.0.0: version "1.0.5" @@ -7519,28 +6943,27 @@ htmlparser2@9.0.0: domutils "^3.1.0" entities "^4.5.0" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: - "@tootallnate/once" "1" + "@tootallnate/once" "2" agent-base "6" debug "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + agent-base "^7.1.0" + debug "^4.3.4" http-signature@~1.3.6: version "1.3.6" @@ -7559,6 +6982,14 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^7.0.1: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -7569,6 +7000,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -7576,15 +7012,15 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== +husky@^9.0.11: + version "9.0.11" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" + integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== i18next-fs-backend@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-2.2.0.tgz#016c865344632a666ea80653deae466fbfa6042c" - integrity sha512-VOPHhdDX0M/csRqEw+9Ectpf6wvTIg1MZDfAHxc3JKnAlJz7fcZSAKAeyDohOq0xuLx57esYpJopIvBaRb0Bag== + version "2.3.1" + resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-2.3.1.tgz#0c7d2459ff4a039e2b3228131809fbc0e74ff1a8" + integrity sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg== i18next@^22.4.10: version "22.5.1" @@ -7593,7 +7029,7 @@ i18next@^22.4.10: dependencies: "@babel/runtime" "^7.20.6" -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7607,44 +7043,29 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== - -icss-utils@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb-wrapper@^1.5.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" - integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== - ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== +ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== dependencies: - minimatch "^3.0.4" - -ignore@^5.1.4, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + minimatch "^5.0.1" -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== +ignore-walk@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.4.tgz#89950be94b4f522225eb63a13c56badb639190e9" + integrity sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== dependencies: - import-from "^3.0.0" + minimatch "^9.0.0" + +ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" @@ -7654,19 +7075,12 @@ import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== -import-local@^3.0.2: +import-local@3.1.0, import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== @@ -7684,16 +7098,6 @@ 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== -indexof@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflected@^1.1.6: version "1.1.7" resolved "https://registry.yarnpkg.com/inflected/-/inflected-1.1.7.tgz#c393df6e28472d0d77b3082ec3aa2091f4bc96f9" @@ -7707,7 +7111,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.0, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7722,23 +7126,23 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.8, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== +init-package-json@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-5.0.0.tgz#030cf0ea9c84cfc1b0dc2e898b45d171393e4b40" + integrity sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw== dependencies: - npm-package-arg "^8.1.5" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "^4.1.1" + npm-package-arg "^10.0.0" + promzard "^1.0.0" + read "^2.0.0" + read-package-json "^6.0.0" semver "^7.3.5" validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" + validate-npm-package-name "^5.0.0" inline-style-parser@0.1.1: version "0.1.1" @@ -7750,7 +7154,7 @@ inline-style-parser@0.2.2: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633" integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== -inquirer@^7.0.4, inquirer@^7.3.3: +inquirer@^7.0.4: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== @@ -7769,13 +7173,34 @@ inquirer@^7.0.4, inquirer@^7.3.3: strip-ansi "^6.0.0" through "^2.3.6" -internal-slot@^1.0.4, internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== +inquirer@^8.2.4: + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +internal-slot@^1.0.4, internal-slot@^1.0.5, internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + es-errors "^1.3.0" + hasown "^2.0.0" side-channel "^1.0.4" ioredis@^5.0.4: @@ -7793,10 +7218,13 @@ ioredis@^5.0.4: redis-parser "^3.0.0" standard-as-callback "^2.1.0" -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" @@ -7819,14 +7247,13 @@ is-arguments@^1.1.1: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-arrayish@^0.2.1: version "0.2.1" @@ -7877,6 +7304,13 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== +is-ci@3.0.1, is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" @@ -7891,19 +7325,12 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-ci@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.5.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" @@ -7944,13 +7371,6 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -7961,6 +7381,18 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -8009,6 +7441,11 @@ is-installed-globally@~0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -8019,15 +7456,10 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== is-npm@^1.0.0: version "1.0.0" @@ -8061,11 +7493,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-object@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" - integrity sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ== - is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -8100,23 +7527,11 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw== -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -8136,19 +7551,24 @@ is-set@^2.0.1, is-set@^2.0.2: integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" -is-ssh@^1.3.0: +is-ssh@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: protocols "^2.0.1" +is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -8159,6 +7579,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -8180,12 +7605,19 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== +is-text-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" + integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== + dependencies: + text-extensions "^2.0.0" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - which-typed-array "^1.1.11" + which-typed-array "^1.1.14" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -8239,16 +7671,6 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -is@~0.2.6: - version "0.2.7" - resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" - integrity sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -8259,16 +7681,16 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -isbuffer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" - integrity sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -8288,11 +7710,11 @@ isstream@~0.1.2: integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: +istanbul-lib-instrument@^5.0.4: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -8303,6 +7725,17 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" + integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" @@ -8322,9 +7755,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -8340,6 +7773,15 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.8.7" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" @@ -8350,441 +7792,390 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: - "@jest/types" "^27.5.1" execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" + dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" + glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^27.5.1" + pretty-format "^29.7.0" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== +"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1, jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-mock "^29.7.0" + jest-util "^29.7.0" -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.5.1" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" + jest-util "^29.7.0" jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: - "@jest/types" "^27.5.1" chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" + jest-haste-map "^29.7.0" jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-util "^29.7.0" + jest-validate "^29.7.0" resolve "^1.20.0" - resolve.exports "^1.1.0" + resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.5.1" + expect "^29.7.0" graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" + pretty-format "^29.7.0" + semver "^7.5.3" -jest-util@^27.0.0, jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.5.1" + jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^27.5.1" + pretty-format "^29.7.0" -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.5.1" + emittery "^0.13.1" + jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - "@jest/core" "^27.5.1" + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" import-local "^3.0.2" - jest-cli "^27.5.1" + jest-cli "^29.7.0" -jiti@^1.18.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" - integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== +jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== joi@^17.7.0: - version "17.11.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a" - integrity sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ== + version "17.12.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.1.tgz#3347ecf4cd3301962d42191c021b165eef1f395b" + integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" -jose@^4.11.4, jose@^4.15.1: +jose@^4.11.4, jose@^4.15.4: version "4.15.4" resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.4.tgz#02a9a763803e3872cf55f29ecef0dfdcc218cc03" integrity sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ== +joycon@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8795,7 +8186,14 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== -js-yaml@^3.13.1: +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -8803,51 +8201,16 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -8878,6 +8241,11 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-parse-even-better-errors@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" + integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -8903,11 +8271,6 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.x, json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -8915,7 +8278,12 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -jsona@^1.12.1: +json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsona@^1.12.1, jsona@^1.9.7: version "1.12.1" resolved "https://registry.yarnpkg.com/jsona/-/jsona-1.12.1.tgz#213f8c55a3460d94179824ac83d1dfdbfa265238" integrity sha512-44WL4ZdsKx//mCDPUFQtbK7mnVdHXcVzbBy7Pzy0LAgXyfpN5+q8Hum7cLUX4wTnRsClHb4eId1hePZYchwczg== @@ -8930,11 +8298,16 @@ jsonapi-serializer@^3.6.7: inflected "^1.1.6" lodash "^4.16.3" -jsonc-parser@^3.0.0: +jsonc-parser@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== +jsonc-parser@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -8956,16 +8329,6 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - jsprim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" @@ -8976,7 +8339,7 @@ jsprim@^2.0.2: json-schema "0.4.0" verror "1.10.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== @@ -9015,22 +8378,17 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -kleur@^4.1.3: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -language-subtag-registry@~0.3.2: +language-subtag-registry@^0.3.20: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -language-tags@=1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== dependencies: - language-subtag-registry "~0.3.2" + language-subtag-registry "^0.3.20" latest-version@^3.0.0: version "3.1.0" @@ -9051,114 +8409,85 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== -lerna@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" - integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== - dependencies: - "@lerna/add" "4.0.0" - "@lerna/bootstrap" "4.0.0" - "@lerna/changed" "4.0.0" - "@lerna/clean" "4.0.0" - "@lerna/cli" "4.0.0" - "@lerna/create" "4.0.0" - "@lerna/diff" "4.0.0" - "@lerna/exec" "4.0.0" - "@lerna/import" "4.0.0" - "@lerna/info" "4.0.0" - "@lerna/init" "4.0.0" - "@lerna/link" "4.0.0" - "@lerna/list" "4.0.0" - "@lerna/publish" "4.0.0" - "@lerna/run" "4.0.0" - "@lerna/version" "4.0.0" - import-local "^3.0.2" - npmlog "^4.1.2" - -level-blobs@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" - integrity sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg== - dependencies: - level-peek "1.0.6" - once "^1.3.0" - readable-stream "^1.0.26-4" - -level-filesystem@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" - integrity sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g== - dependencies: - concat-stream "^1.4.4" - errno "^0.1.1" - fwd-stream "^1.0.4" - level-blobs "^0.1.7" - level-peek "^1.0.6" - level-sublevel "^5.2.0" - octal "^1.0.0" - once "^1.3.0" - xtend "^2.2.0" - -level-fix-range@2.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" - integrity sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA== - dependencies: - clone "~0.1.9" - -level-fix-range@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" - integrity sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ== - -"level-hooks@>=4.4.0 <5": - version "4.5.0" - resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" - integrity sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA== - dependencies: - string-range "~1.2" - -level-js@^2.1.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697" - integrity sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ== - dependencies: - abstract-leveldown "~0.12.0" - idb-wrapper "^1.5.0" - isbuffer "~0.0.0" - ltgt "^2.1.2" - typedarray-to-buffer "~1.0.0" - xtend "~2.1.2" - -level-peek@1.0.6, level-peek@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" - integrity sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ== - dependencies: - level-fix-range "~1.0.2" - -level-sublevel@^5.2.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" - integrity sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA== - dependencies: - level-fix-range "2.0" - level-hooks ">=4.4.0 <5" - string-range "~1.2.1" - xtend "~2.0.4" - -levelup@^0.18.2: - version "0.18.6" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb" - integrity sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q== - dependencies: - bl "~0.8.1" - deferred-leveldown "~0.2.0" - errno "~0.1.1" - prr "~0.0.0" - readable-stream "~1.0.26" - semver "~2.3.1" - xtend "~3.0.0" +lerna@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-8.1.2.tgz#441e8078d0b68557b4ef5b33202a16a6bc2a50d3" + integrity sha512-RCyBAn3XsqqvHbz3TxLfD7ylqzCi1A2UJnFEZmhURgx589vM3qYWQa/uOMeEEf565q6cAdtmulITciX1wgkAtw== + dependencies: + "@lerna/create" "8.1.2" + "@npmcli/run-script" "7.0.2" + "@nx/devkit" ">=17.1.2 < 19" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.11" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.1" + columnify "1.6.0" + conventional-changelog-angular "7.0.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "^8.2.0" + dedent "0.7.0" + envinfo "7.8.1" + execa "5.0.0" + fs-extra "^11.1.1" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + import-local "3.1.0" + ini "^1.3.8" + init-package-json "5.0.0" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + jest-diff ">=29.4.3 < 30" + js-yaml "4.1.0" + libnpmaccess "7.0.2" + libnpmpublish "7.3.0" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.5" + npmlog "^6.0.2" + nx ">=17.1.2 < 19" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "^17.0.5" + pify "5.0.0" + read-cmd-shim "4.0.0" + read-package-json "6.0.4" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "^9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + typescript ">=3 < 6" + upath "2.0.1" + uuid "^9.0.0" + validate-npm-package-license "3.0.4" + validate-npm-package-name "5.0.0" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" leven@^3.1.0: version "3.1.0" @@ -9173,26 +8502,27 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - -libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== - dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - semver "^7.1.3" - ssri "^8.0.1" +libnpmaccess@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" + integrity sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw== + dependencies: + npm-package-arg "^10.1.0" + npm-registry-fetch "^14.0.3" + +libnpmpublish@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.3.0.tgz#2ceb2b36866d75a6cd7b4aa748808169f4d17e37" + integrity sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg== + dependencies: + ci-info "^3.6.1" + normalize-package-data "^5.0.0" + npm-package-arg "^10.1.0" + npm-registry-fetch "^14.0.3" + proc-log "^3.0.0" + semver "^7.3.7" + sigstore "^1.4.0" + ssri "^10.0.1" libnpx@^10.2.4: version "10.2.4" @@ -9208,21 +8538,64 @@ libnpx@^10.2.4: y18n "^4.0.0" yargs "^14.2.3" -lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: +lilconfig@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + +lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lines-and-columns@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" + integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== + +lint-staged@^15.2.2: + version "15.2.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.2.tgz#ad7cbb5b3ab70e043fa05bff82a09ed286bc4c5f" + integrity sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw== + dependencies: + chalk "5.3.0" + commander "11.1.0" + debug "4.3.4" + execa "8.0.1" + lilconfig "3.0.0" + listr2 "8.0.1" + micromatch "4.0.5" + pidtree "0.6.0" + string-argv "0.3.2" + yaml "2.3.4" + listify@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/listify/-/listify-1.0.3.tgz#a9335ac351c3d1aea515494ed746976eeb92248b" integrity sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg== +listr2@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.0.1.tgz#4d3f50ae6cec3c62bdf0e94f5c2c9edebd4b9c34" + integrity sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA== + dependencies: + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.0.0" + rfdc "^1.3.0" + wrap-ansi "^9.0.0" + listr2@^3.8.3: version "3.14.0" resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" @@ -9237,6 +8610,16 @@ listr2@^3.8.3: through "^2.3.8" wrap-ansi "^7.0.0" +load-json-file@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -9247,20 +8630,10 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== +load-tsconfig@^0.2.3: + version "0.2.5" + resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" + integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== locate-path@^2.0.0: version "2.0.0" @@ -9297,11 +8670,6 @@ lodash-es@^4.17.21: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -9347,7 +8715,7 @@ lodash.kebabcase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== -lodash.memoize@4.x, lodash.memoize@^4.1.2: +lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== @@ -9372,26 +8740,16 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + lodash.startcase@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -9402,12 +8760,12 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@^4.16.3, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.16.3, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -9425,6 +8783,17 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +log-update@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.0.0.tgz#0ddeb7ac6ad658c944c1de902993fce7c33f5e59" + integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== + dependencies: + ansi-escapes "^6.2.0" + cli-cursor "^4.0.0" + slice-ansi "^7.0.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" + longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" @@ -9452,6 +8821,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + lru-cache@^4.0.1, lru-cache@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -9474,22 +8848,22 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -ltgt@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== +lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== +make-dir@4.0.0, make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: - sourcemap-codec "^1.4.8" + semver "^7.5.3" make-dir@^1.0.0: version "1.3.0" @@ -9506,67 +8880,55 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== +make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" + negotiator "^0.6.3" promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" -make-fetch-happen@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== +make-fetch-happen@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz#705d6f6cbd7faecb8eac2432f551e49475bfedf0" + integrity sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A== dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" + minipass "^7.0.2" + minipass-fetch "^3.0.0" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" - negotiator "^0.6.2" + negotiator "^0.6.3" promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" + ssri "^10.0.0" makeerror@1.0.12: version "1.0.12" @@ -9595,25 +8957,6 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -maxmin@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" - integrity sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw== - dependencies: - chalk "^1.0.0" - figures "^1.0.1" - gzip-size "^3.0.0" - pretty-bytes "^3.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" @@ -9688,11 +9031,6 @@ mdast-util-toc@^5.1.0: unist-util-is "^4.0.0" unist-util-visit "^2.0.0" -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -9703,6 +9041,11 @@ memoize-one@^4.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== +meow@^12.0.1: + version "12.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" + integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== + meow@^8.0.0, meow@^8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -9730,54 +9073,6 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -microbundle@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.15.1.tgz#3fa67128934b31736823b5c868dae4b92d94e766" - integrity sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q== - dependencies: - "@babel/core" "^7.12.10" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@babel/plugin-transform-flow-strip-types" "^7.12.10" - "@babel/plugin-transform-react-jsx" "^7.12.11" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/preset-env" "^7.12.11" - "@babel/preset-flow" "^7.12.1" - "@babel/preset-react" "^7.12.10" - "@rollup/plugin-alias" "^3.1.1" - "@rollup/plugin-babel" "^5.2.2" - "@rollup/plugin-commonjs" "^17.0.0" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^11.0.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.2" - asyncro "^3.0.0" - autoprefixer "^10.1.0" - babel-plugin-macros "^3.0.1" - babel-plugin-transform-async-to-promises "^0.8.18" - babel-plugin-transform-replace-expressions "^0.2.0" - brotli-size "^4.0.0" - builtin-modules "^3.1.0" - camelcase "^6.2.0" - escape-string-regexp "^4.0.0" - filesize "^6.1.0" - gzip-size "^6.0.0" - kleur "^4.1.3" - lodash.merge "^4.6.2" - postcss "^8.2.1" - pretty-bytes "^5.4.1" - rollup "^2.35.1" - rollup-plugin-bundle-size "^1.0.3" - rollup-plugin-postcss "^4.0.0" - rollup-plugin-terser "^7.0.2" - rollup-plugin-typescript2 "^0.32.0" - rollup-plugin-visualizer "^5.6.0" - sade "^1.7.4" - terser "^5.7.0" - tiny-glob "^0.2.8" - tslib "^2.0.3" - typescript "^4.1.3" - micromark@~2.11.0: version "2.11.4" resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" @@ -9786,7 +9081,7 @@ micromark@~2.11.0: debug "^4.0.0" parse-entities "^2.0.0" -micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -9801,14 +9096,6 @@ middleearth-names@^1.1.0: dependencies: unique-random-array "1.0.0" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -9826,6 +9113,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -9846,15 +9138,19 @@ mini-svg-data-uri@^1.2.3: resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== +minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" @@ -9870,6 +9166,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -9891,16 +9194,23 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== dependencies: - minipass "^3.1.0" + minipass "^7.0.3" + +minipass-fetch@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== + dependencies: + minipass "^7.0.3" minipass-sized "^1.0.3" - minizlib "^2.0.0" + minizlib "^2.1.2" optionalDependencies: - encoding "^0.1.12" + encoding "^0.1.13" minipass-flush@^1.0.5: version "1.0.5" @@ -9917,7 +9227,7 @@ minipass-json-stream@^1.0.1: jsonparse "^1.3.1" minipass "^3.0.0" -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -9931,34 +9241,29 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: +minipass@^3.0.0, minipass@^3.1.1: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + minipass@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -9971,37 +9276,16 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== - dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modify-values@^1.0.0: +modify-values@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -mri@^1.1.0, mri@^1.1.5: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - mrm-core@^6.1.7: version "6.1.7" resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.1.7.tgz#709193e789290c1c45d54b59c94ea8c5a9dfd5c1" @@ -10061,18 +9345,7 @@ ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -multimatch@^5.0.0: +multimatch@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== @@ -10083,11 +9356,16 @@ multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mute-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -10102,27 +9380,22 @@ nanoclone@^0.2.1: resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.3.4, nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.4, nanoid@^3.3.6, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@^0.6.2: +negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -10133,9 +9406,9 @@ neo-async@^2.6.2: integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== next-auth@^4.22.1: - version "4.24.3" - resolved "https://registry.yarnpkg.com/next-auth/-/next-auth-4.24.3.tgz#1c57e6ec66fa69744cc9d28989a36916da4e6d19" - integrity sha512-n1EvmY7MwQMSOkCh6jhI6uBneB6VVtkYELVMEwVaCLD1mBD3IAAucwk+90kgxramW09nSp5drvynwfNCi1JjaQ== + version "4.24.6" + resolved "https://registry.yarnpkg.com/next-auth/-/next-auth-4.24.6.tgz#8cb1848197fdb2479eac2f10e4efa1f1b6b0daaa" + integrity sha512-djQt3ZEaWEIxcsuh3HTW2uuzLfXMRjHH+ugAsichlQSbH4iA5MRcgMA2HvTNvsDTDLh44tyU72+/gWsxgTbAKg== dependencies: "@babel/runtime" "^7.20.13" "@panva/hkdf" "^1.0.2" @@ -10147,6 +9420,28 @@ next-auth@^4.22.1: preact-render-to-string "^5.1.19" uuid "^8.3.2" +next-drupal-query@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/next-drupal-query/-/next-drupal-query-0.4.0.tgz#26def174b3449fd5365670c83f23f942cab8d845" + integrity sha512-05kDHr/I0OiwaXLQxhBHEZ1q6xIWYNSnli2TsiAgEtfmDo4K2mqGEnjPDUXzkXvtH/XfJ7y5hG83qydLKghiAA== + dependencies: + deepmerge "^4.2.2" + drupal-jsonapi-params "^2.1.0" + next "^12.2.3 || ^13" + type-fest "^2.17.0" + +next-drupal@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/next-drupal/-/next-drupal-1.6.0.tgz#4bc14f73a5dc55763e461da696fc938da2bb6b67" + integrity sha512-IRHgcpidXj45jicVl2wEp2WhyaV384rfubxxWopgbmo4YKYvIrg0GtPj3EQNuuX5/EJxyZcULHmmhSXFSidlpg== + dependencies: + jsona "^1.9.7" + next "^12.2.0 || ^13" + node-cache "^5.1.2" + qs "^6.10.3" + react "^17.0.2 || ^18" + react-dom "^17.0.2 || ^18" + next-i18next@^13.1.5: version "13.3.0" resolved "https://registry.yarnpkg.com/next-i18next/-/next-i18next-13.3.0.tgz#81575b0e17a94efa97319c1e697af893a4cea174" @@ -10197,7 +9492,7 @@ next-seo@^4.23.0: resolved "https://registry.yarnpkg.com/next-seo/-/next-seo-4.29.0.tgz#d281e95ba47914117cc99e9e468599f0547d9b9b" integrity sha512-xmwzcz4uHaYJ8glbuhs6FSBQ7z3irmdPYdJJ5saWm72Uy3o+mPKGaPCXQetTCE6/xxVnpoDV4yFtFlEjUcljSg== -"next@^12.2.0 || ^13", "next@^12.2.3 || ^13", next@^13: +"next@^12.2.0 || ^13", "next@^12.2.3 || ^13": version "13.5.6" resolved "https://registry.yarnpkg.com/next/-/next-13.5.6.tgz#e964b5853272236c37ce0dd2c68302973cf010b1" integrity sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw== @@ -10246,10 +9541,33 @@ next@^12.2.3: "@next/swc-win32-ia32-msvc" "12.3.4" "@next/swc-win32-x64-msvc" "12.3.4" +"next@^12.2.3 || ^13 || ^14", "next@^13.4 || ^14", next@^14: + version "14.1.0" + resolved "https://registry.yarnpkg.com/next/-/next-14.1.0.tgz#b31c0261ff9caa6b4a17c5af019ed77387174b69" + integrity sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q== + dependencies: + "@next/env" "14.1.0" + "@swc/helpers" "0.5.2" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" + styled-jsx "5.1.1" + optionalDependencies: + "@next/swc-darwin-arm64" "14.1.0" + "@next/swc-darwin-x64" "14.1.0" + "@next/swc-linux-arm64-gnu" "14.1.0" + "@next/swc-linux-arm64-musl" "14.1.0" + "@next/swc-linux-x64-gnu" "14.1.0" + "@next/swc-linux-x64-musl" "14.1.0" + "@next/swc-win32-arm64-msvc" "14.1.0" + "@next/swc-win32-ia32-msvc" "14.1.0" + "@next/swc-win32-x64-msvc" "14.1.0" + node-abi@^3.3.0: - version "3.51.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.51.0.tgz#970bf595ef5a26a271307f8a4befa02823d4e87d" - integrity sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA== + version "3.55.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.55.0.tgz#57bc713082a48d4c7c7d3104d3d0cbb1a0e12ed9" + integrity sha512-uPEjtyh2tFEvWYt4Jw7McOD5FPcHkcxm/tHZc5PWaDB3JYq0rGFUbgaAK+CT5pYpQddBfsZVWI08OwoRfdfbcQ== dependencies: semver "^7.3.5" @@ -10265,6 +9583,13 @@ node-cache@^5.1.2: dependencies: clone "2.x" +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -10272,65 +9597,45 @@ node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== +node-gyp@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.0.1.tgz#205514fc19e5830fa991e4a689f9e81af377a966" + integrity sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg== dependencies: env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + tar "^6.1.2" + which "^4.0.0" node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== +nopt@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" + integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== dependencies: - abbrev "1" + abbrev "^2.0.0" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -10340,7 +9645,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: +normalize-package-data@^3.0.0, normalize-package-data@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== @@ -10350,6 +9655,26 @@ normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: semver "^7.3.4" validate-npm-package-license "^3.0.1" +normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-package-data@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.0.tgz#68a96b3c11edd462af7189c837b6b1064a484196" + integrity sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== + dependencies: + hosted-git-info "^7.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -10365,44 +9690,66 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.0.1, normalize-url@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^1.1.1: +npm-bundled@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== +npm-bundled@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" + integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== dependencies: - semver "^7.1.1" + npm-normalize-package-bin "^3.0.0" -npm-lifecycle@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== +npm-install-checks@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" + semver "^7.1.1" -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: +npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" + integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + npm-package-arg@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" @@ -10413,60 +9760,58 @@ npm-package-arg@^6.0.0: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== +npm-packlist@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" + integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^1.1.2" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== +npm-packlist@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" + integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" + ignore-walk "^6.0.4" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== +npm-pick-manifest@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz#f87a4c134504a2c7931f2bb8733126e3c3bb7e8f" + integrity sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== +npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: + version "14.0.5" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" + integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== dependencies: - "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^11.0.0" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-registry-fetch@^16.0.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz#10227b7b36c97bc1cf2902a24e4f710cfe62803c" + integrity sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw== + dependencies: + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^3.0.0" npm-run-path@^2.0.0: version "2.0.2" @@ -10482,49 +9827,85 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +npm-run-path@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" + integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + path-key "^4.0.0" + +npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" nprogress@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== +nx@18.0.4, "nx@>=17.1.2 < 19": + version "18.0.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-18.0.4.tgz#3a77de6b51869449d849dccab7db74b35ec32a6b" + integrity sha512-Njb1fGppOw/wM7nOA1hYlLduV2aL4PdXSv5QS5cVYicHT5tw5RnG/0z4j9e6QfFj2EydxVeDUtlGR98diZ3/Yw== dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -nwsapi@^2.2.0: - version "2.2.7" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + "@nrwl/tao" "18.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.0-rc.46" + "@zkochan/js-yaml" "0.0.6" + axios "^1.6.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^8.0.1" + dotenv "~16.3.1" + dotenv-expand "~10.0.0" + enquirer "~2.3.6" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + ignore "^5.0.4" + jest-diff "^29.4.1" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "9.0.3" + node-machine-id "1.1.12" + npm-run-path "^4.0.1" + open "^8.4.0" + ora "5.3.0" + semver "^7.5.3" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nx/nx-darwin-arm64" "18.0.4" + "@nx/nx-darwin-x64" "18.0.4" + "@nx/nx-freebsd-x64" "18.0.4" + "@nx/nx-linux-arm-gnueabihf" "18.0.4" + "@nx/nx-linux-arm64-gnu" "18.0.4" + "@nx/nx-linux-arm64-musl" "18.0.4" + "@nx/nx-linux-x64-gnu" "18.0.4" + "@nx/nx-linux-x64-musl" "18.0.4" + "@nx/nx-win32-arm64-msvc" "18.0.4" + "@nx/nx-win32-x64-msvc" "18.0.4" oauth@^0.9.15: version "0.9.15" resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -10539,10 +9920,10 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.1.5: version "1.1.5" @@ -10557,31 +9938,17 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-keys@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" - integrity sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA== - dependencies: - foreach "~2.0.1" - indexof "~0.0.1" - is "~0.2.6" - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - -object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" + call-bind "^1.0.5" + define-properties "^1.2.1" has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6: +object.entries@^1.1.6, object.entries@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== @@ -10590,7 +9957,7 @@ object.entries@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.fromentries@^2.0.6: +object.fromentries@^2.0.6, object.fromentries@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== @@ -10599,26 +9966,16 @@ object.fromentries@^2.0.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.getownpropertydescriptors@^2.0.3: - version "2.1.7" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" - integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== - dependencies: - array.prototype.reduce "^1.0.6" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - safe-array-concat "^1.0.0" - -object.groupby@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== +object.groupby@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" + integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + array.prototype.filter "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" object.hasown@^1.1.2: version "1.1.3" @@ -10628,7 +9985,7 @@ object.hasown@^1.1.2: define-properties "^1.2.0" es-abstract "^1.22.1" -object.values@^1.1.6: +object.values@^1.1.6, object.values@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -10637,11 +9994,6 @@ object.values@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -octal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" - integrity sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ== - oidc-token-hash@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz#9a229f0a1ce9d4fc89bcaee5478c97a889e7b7b6" @@ -10661,6 +10013,13 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -10671,11 +10030,11 @@ open@^8.4.0: is-wsl "^2.2.0" openid-client@^5.4.0: - version "5.6.1" - resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.6.1.tgz#8f7526a50c290a5e28a7fe21b3ece3107511bc73" - integrity sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ== + version "5.6.4" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.6.4.tgz#b2c25e6d5338ba3ce00e04341bb286798a196177" + integrity sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA== dependencies: - jose "^4.15.1" + jose "^4.15.4" lru-cache "^6.0.0" object-hash "^2.2.0" oidc-token-hash "^5.0.3" @@ -10692,6 +10051,35 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +ora@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -10702,7 +10090,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -10739,7 +10127,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -10774,24 +10162,24 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map-series@^2.1.0: +p-map-series@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -p-map@^4.0.0: +p-map@4.0.0, p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-pipe@^3.1.0: +p-pipe@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== -p-queue@^6.6.2: +p-queue@6.6.2: version "6.6.2" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== @@ -10799,7 +10187,7 @@ p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-reduce@^2.0.0, p-reduce@^2.1.0: +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== @@ -10821,7 +10209,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@^2.1.1: +p-waterfall@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== @@ -10848,30 +10236,29 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@^11.2.6: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" +pacote@^17.0.5: + version "17.0.6" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.6.tgz#874bb59cda5d44ab784d0b6530fcb4a7d9b76a60" + integrity sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^7.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^16.0.0" + proc-log "^3.0.0" promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" + read-package-json "^7.0.0" + read-package-json-fast "^3.0.0" + sigstore "^2.2.0" + ssri "^10.0.0" + tar "^6.1.11" parent-module@^1.0.0: version "1.0.1" @@ -10880,17 +10267,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -10946,27 +10322,21 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== -parse-path@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" - integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" + protocols "^2.0.0" -parse-url@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.5.tgz#4acab8982cef1846a0f8675fa686cef24b2f6f9b" - integrity sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA== +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: - is-ssh "^1.3.0" - normalize-url "^6.1.0" - parse-path "^4.0.0" - protocols "^1.4.0" + parse-path "^7.0.0" -parse5@6.0.1, parse5@^6.0.0: +parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== @@ -11001,11 +10371,24 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1, path-scurry@^1.6.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -11025,17 +10408,6 @@ pause-stream@0.0.11: dependencies: through "~2.3" -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -11051,11 +10423,21 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pidtree@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + +pify@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -11071,68 +10453,22 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - pirates@^4.0.1, pirates@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "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.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== postcss-import@^15.1.0: version "15.1.0" @@ -11150,206 +10486,20 @@ postcss-js@^4.0.1: dependencies: camelcase-css "^2.0.1" -postcss-load-config@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== - dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" - postcss-load-config@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" - integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== - dependencies: - lilconfig "^2.0.5" - yaml "^2.1.1" - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - 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" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" - integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048" - integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - generic-names "^4.0.0" - icss-replace-symbols "^1.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.1" + lilconfig "^3.0.0" + yaml "^2.3.4" postcss-nested@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - 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" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - postcss-value-parser "^4.2.0" + postcss-selector-parser "^6.0.11" postcss-selector-parser@6.0.10: version "6.0.10" @@ -11359,30 +10509,15 @@ postcss-selector-parser@6.0.10: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== +postcss-selector-parser@^6.0.11: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -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" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -11396,7 +10531,7 @@ postcss@8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@8.4.31, postcss@^8.2.1, postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.19, postcss@^8.4.23, postcss@^8.4.5: +postcss@8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -11405,6 +10540,15 @@ postcss@8.4.31, postcss@^8.2.1, postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.1 picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.23, postcss@^8.4.31, postcss@^8.4.5: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + preact-render-to-string@^5.1.19: version "5.2.6" resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz#0ff0c86cd118d30affb825193f18e92bd59d0604" @@ -11413,9 +10557,9 @@ preact-render-to-string@^5.1.19: pretty-format "^3.8.0" preact@^10.6.3: - version "10.18.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.18.1.tgz#3b84bb305f0b05f4ad5784b981d15fcec4e105da" - integrity sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg== + version "10.19.5" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.5.tgz#ed220be0d3273102b5c97dd0163468164064d9f1" + integrity sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ== prebuild-install@^7.1.1: version "7.1.1" @@ -11457,24 +10601,17 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.8.8: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-bytes@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" - integrity sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow== - dependencies: - number-is-nan "^1.0.0" +prettier@^3.1.0, prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== -pretty-bytes@^5.4.1, pretty-bytes@^5.6.0: +pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: +pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== @@ -11483,23 +10620,20 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-format@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== -pretty-quick@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" - integrity sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA== - dependencies: - chalk "^3.0.0" - execa "^4.0.0" - find-up "^4.1.0" - ignore "^5.1.4" - mri "^1.1.5" - multimatch "^4.0.0" - prism-react-renderer@^1.3.1: version "1.3.5" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" @@ -11510,10 +10644,10 @@ prismjs@~1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -process-es6@^0.11.2: - version "0.11.6" - resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" - integrity sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA== +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== process-nextick-args@~2.0.0: version "2.0.1" @@ -11533,11 +10667,6 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -promise.series@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" - integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -11546,12 +10675,12 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== +promzard@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.0.tgz#3246f8e6c9895a77c0549cefb65828ac0f6c006b" + integrity sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig== dependencies: - read "1" + read "^2.0.0" prop-ini@^0.0.2: version "0.0.2" @@ -11581,17 +10710,7 @@ property-information@^5.0.0, property-information@^5.3.0: dependencies: xtend "^4.0.0" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== - -protocols@^2.0.1: +protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== @@ -11601,15 +10720,10 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== ps-tree@1.2.0: version "1.2.0" @@ -11623,23 +10737,11 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -11649,9 +10751,9 @@ pump@^3.0.0: once "^1.3.1" punycode@^2.1.0, punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pupa@^2.0.1: version "2.1.1" @@ -11660,12 +10762,12 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== -qs@^6.10.0, qs@^6.10.3, qs@^6.11.2, qs@^6.9.4: +qs@^6.10.0, qs@^6.10.3, qs@^6.11.2: version "6.11.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== @@ -11679,21 +10781,6 @@ qs@~6.10.3: dependencies: side-channel "^1.0.4" -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -11709,21 +10796,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -11761,9 +10833,9 @@ react-highlight-words@^0.18.0: prop-types "^15.5.8" react-hook-form@^7.25.3, react-hook-form@^7.8.6: - version "7.47.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.47.0.tgz#a42f07266bd297ddf1f914f08f4b5f9783262f31" - integrity sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg== + version "7.50.1" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.50.1.tgz#f6aeb17a863327e5a0252de8b35b4fc8990377ed" + integrity sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ== react-i18next@^12.1.5: version "12.3.1" @@ -11783,10 +10855,15 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-property@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.0.tgz#2156ba9d85fa4741faf1918b38efc1eae3c6a136" - integrity sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-property@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.2.tgz#d5ac9e244cef564880a610bc8d868bd6f60fdda6" + integrity sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug== react@^17.0.2: version "17.0.2" @@ -11810,57 +10887,38 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== - -read-package-json-fast@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" +read-cmd-shim@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== -read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== +read-package-json-fast@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" -read-package-json@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.2.tgz#b444d047de7c75d4a160cb056d00c0693c1df703" - integrity sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ== +read-package-json@6.0.4, read-package-json@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" + integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== +read-package-json@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-7.0.0.tgz#d605c9dcf6bc5856da24204aa4e9518ee9714be0" + integrity sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg== dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + npm-normalize-package-bin "^3.0.0" read-pkg-up@^3.0.0: version "3.0.0" @@ -11898,12 +10956,12 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@1, read@~1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== +read@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read/-/read-2.1.0.tgz#69409372c54fe3381092bc363a00650b6ac37218" + integrity sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ== dependencies: - mute-stream "~0.0.4" + mute-stream "~1.0.0" readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" @@ -11914,17 +10972,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^1.0.26-4: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -11937,26 +10985,6 @@ readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~1.0.26, readable-stream@~1.0.26-4: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -11992,14 +11020,15 @@ redis-parser@^3.0.0: redis-errors "^1.0.0" reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz#e0bd28b597518f16edaf9c0e292c631eb13e0674" + integrity sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" + get-intrinsic "^1.2.3" globalthis "^1.0.3" which-builtin-type "^1.1.3" @@ -12025,9 +11054,9 @@ regenerate@^1.4.2: integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regenerator-transform@^0.15.2: version "0.15.2" @@ -12036,14 +11065,15 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" regexpu-core@^5.3.1: version "5.3.2" @@ -12209,32 +11239,6 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" -request@^2.88.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -12284,12 +11288,12 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve.exports@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" - integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.3.2: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.3.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -12322,6 +11326,14 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -12333,11 +11345,11 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== -rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -12351,94 +11363,33 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-bundle-size@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz#d245cd988486b4040279f9fd33f357f61673e90f" - integrity sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ== - dependencies: - chalk "^1.1.3" - maxmin "^2.1.0" - -rollup-plugin-node-builtins@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" - integrity sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw== - dependencies: - browserify-fs "^1.0.0" - buffer-es6 "^4.9.2" - crypto-browserify "^3.11.0" - process-es6 "^0.11.2" - -rollup-plugin-postcss@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" - integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== - dependencies: - chalk "^4.1.0" - concat-with-sourcemaps "^1.1.0" - cssnano "^5.0.1" - import-cwd "^3.0.0" - p-queue "^6.6.2" - pify "^5.0.0" - postcss-load-config "^3.0.0" - postcss-modules "^4.0.0" - promise.series "^0.2.0" - resolve "^1.19.0" - rollup-pluginutils "^2.8.2" - safe-identifier "^0.4.2" - style-inject "^0.3.0" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-plugin-typescript2@^0.32.0: - version "0.32.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.32.1.tgz#470ded8e1965efac02043cc0ef4a7fa36bed83b9" - integrity sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw== - dependencies: - "@rollup/pluginutils" "^4.1.2" - find-cache-dir "^3.3.2" - fs-extra "^10.0.0" - resolve "^1.20.0" - tslib "^2.4.0" - -rollup-plugin-visualizer@^5.6.0: - version "5.9.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz#f1aa2d9b1be8ebd6869223c742324897464d8891" - integrity sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A== +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" + glob "^9.2.0" -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== +rollup@^4.0.2: + version "4.12.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.12.0.tgz#0b6d1e5f3d46bbcf244deec41a7421dc54cc45b5" + integrity sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q== dependencies: - estree-walker "^0.6.1" - -rollup@^2.35.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + "@types/estree" "1.0.5" optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.12.0" + "@rollup/rollup-android-arm64" "4.12.0" + "@rollup/rollup-darwin-arm64" "4.12.0" + "@rollup/rollup-darwin-x64" "4.12.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.12.0" + "@rollup/rollup-linux-arm64-gnu" "4.12.0" + "@rollup/rollup-linux-arm64-musl" "4.12.0" + "@rollup/rollup-linux-riscv64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-musl" "4.12.0" + "@rollup/rollup-win32-arm64-msvc" "4.12.0" + "@rollup/rollup-win32-ia32-msvc" "4.12.0" + "@rollup/rollup-win32-x64-msvc" "4.12.0" fsevents "~2.3.2" run-async@^2.4.0: @@ -12460,31 +11411,24 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -rxjs@^7.5.1, rxjs@^7.8.0: +rxjs@^7.5.1, rxjs@^7.5.5, rxjs@^7.8.0: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" -sade@^1.7.4: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== +safe-array-concat@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + get-intrinsic "^1.2.2" has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -12494,18 +11438,13 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-identifier@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" - integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" + call-bind "^1.0.6" + es-errors "^1.3.0" is-regex "^1.1.4" "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: @@ -12513,13 +11452,6 @@ safe-regex-test@^1.0.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -12562,15 +11494,15 @@ semver-utils@^1.1.4: resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.5.4, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== +semver@7.6.0, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" @@ -12579,39 +11511,32 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" - integrity sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA== - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" shallow-clone@^3.0.0: version "3.0.1" @@ -12634,20 +11559,6 @@ sharp@^0.30.4, sharp@^0.30.7: tar-fs "^2.1.1" tunnel-agent "^0.6.0" -sharp@^0.31.2: - version "0.31.3" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.31.3.tgz#60227edc5c2be90e7378a210466c99aefcf32688" - integrity sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg== - dependencies: - color "^4.2.3" - detect-libc "^2.0.1" - node-addon-api "^5.0.0" - prebuild-install "^7.1.1" - semver "^7.3.8" - simple-get "^4.0.1" - tar-fs "^2.1.1" - tunnel-agent "^0.6.0" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -12682,24 +11593,53 @@ shiki@^0.11.1: vscode-textmate "^6.0.0" side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b" + integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + call-bind "^1.0.6" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" sigmund@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@3.0.7, signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sigstore@^1.4.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" + integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + "@sigstore/sign" "^1.0.0" + "@sigstore/tuf" "^1.0.3" + make-fetch-happen "^11.0.1" + +sigstore@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.2.2.tgz#5e4ff39febeae9e0679bafa22180cb0f445a7e35" + integrity sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg== + dependencies: + "@sigstore/bundle" "^2.2.0" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.0" + "@sigstore/sign" "^2.2.3" + "@sigstore/tuf" "^2.3.1" + "@sigstore/verify" "^1.1.0" + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -12726,7 +11666,7 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^3.0.0: +slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== @@ -12749,10 +11689,21 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +slice-ansi@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== + dependencies: + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" smart-buffer@^4.2.0: version "4.2.0" @@ -12766,30 +11717,30 @@ smpltmpl@^1.0.2: dependencies: babel-code-frame "^6.26.0" -socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" debug "^4.3.3" socks "^2.6.2" -socks@^2.3.3, socks@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== +socks-proxy-agent@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" + integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.6.2, socks@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.3.tgz#7d8a75d7ce845c0a96f710917174dba0d543a785" + integrity sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw== dependencies: - ip "^2.0.0" + ip-address "^9.0.5" smart-buffer "^4.2.0" sort-keys@^2.0.0: @@ -12799,46 +11750,36 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -sort-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^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== -source-map-support@^0.5.6, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" +source-map@0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -12853,9 +11794,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -12866,20 +11807,15 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + version "3.0.17" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== split-lines@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/split-lines/-/split-lines-2.1.0.tgz#3bc9dbf75637c8bae6ed5dcbc7dbd83956b72311" integrity sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw== -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - split2@^3.0.0, split2@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -12887,6 +11823,11 @@ split2@^3.0.0, split2@^3.2.2: dependencies: readable-stream "^3.0.0" +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + split@0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -12894,22 +11835,27 @@ split@0.3: dependencies: through "2" -split@^1.0.0: +split@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.14.1, sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== +sshpk@^1.14.1: + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -12921,17 +11867,19 @@ sshpk@^1.14.1, sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== +ssri@^10.0.0, ssri@^10.0.1: + version "10.0.5" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== dependencies: - minipass "^3.1.1" + minipass "^7.0.3" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +ssri@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" stack-utils@^2.0.3: version "2.0.6" @@ -12983,15 +11931,10 @@ streamsearch@^1.1.0: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== +string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== string-length@^4.0.1: version "4.0.2" @@ -12999,23 +11942,9 @@ string-length@^4.0.1: integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-range@~1.2, string-range@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" - integrity sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + strip-ansi "^6.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13041,7 +11970,25 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + +string.prototype.matchall@^4.0.8: version "4.0.10" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== @@ -13090,11 +12037,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -13102,7 +12044,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== @@ -13123,12 +12072,12 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^6.0.1" strip-bom-string@^1.0.0: version "1.0.0" @@ -13155,6 +12104,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -13172,7 +12126,7 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -strong-log-transformer@^2.1.0: +strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== @@ -13181,17 +12135,12 @@ strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" -style-inject@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" - integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== - -style-to-js@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.6.tgz#8a455a8f8113e71ba04906a2cbb88cdf4cfe8fe6" - integrity sha512-8cx8YkokAgEqGMGhoVI2pdeiVBwPUk0ZhaF/YLsvm64EIVMN4LaiJ7eqkiboD5WnAX/11z3IMMxzxsBBbdCTow== +style-to-js@1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.8.tgz#b3357ad6cbd7cc1216a432ce89c31e554d0861a7" + integrity sha512-bPSspCXkkhETLXnEgDbaoWRWyv3lF2bj32YIc8IElok2IIMHUlZtQUrxYmAkKUNxpluhH0qnKWrmuoXUyTY12g== dependencies: - style-to-object "1.0.1" + style-to-object "1.0.3" style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" @@ -13200,10 +12149,10 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -style-to-object@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.1.tgz#751e6b726e8ad077280b26a8b9111777bfd7de10" - integrity sha512-Mp9eBDx0knTrUGKyImO1enNWkOEYMAr/ut8SUYtPpOFOu5+HOR0yMF4pnExOklQvdSlxh+Mi0+6hUZVBb1zdRw== +style-to-object@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.3.tgz#5ce90eb7f03ef5044bd70a3a23a3c1387fcac5b4" + integrity sha512-xOpx7S53E0V3DpVsvt7ySvoiumRpfXiC99PUXLqGB3wiAnN9ybEIpuzlZ8LAZg+h1sl9JkEUwtSQXxcCgFqbbg== dependencies: inline-style-parser "0.2.2" @@ -13219,22 +12168,14 @@ styled-jsx@5.1.1: dependencies: client-only "0.0.1" -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -sucrase@^3.32.0: - version "3.34.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" - integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== +sucrase@^3.20.3, sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== dependencies: "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" - glob "7.1.6" + glob "^10.3.10" lines-and-columns "^1.1.6" mz "^2.7.0" pirates "^4.0.1" @@ -13252,7 +12193,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -13266,56 +12207,38 @@ supports-color@^8.0.0, supports-color@^8.1.1: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - swr@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8" integrity sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw== -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" -tailwindcss@^3.0.15, tailwindcss@^3.0.23, tailwindcss@^3.0.24, tailwindcss@^3.2.4: - version "3.3.3" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" - integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== +tailwindcss@^3.0.15, tailwindcss@^3.0.23, tailwindcss@^3.0.24, tailwindcss@^3.3.5: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" chokidar "^3.5.3" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.2.12" + fast-glob "^3.3.0" glob-parent "^6.0.2" is-glob "^4.0.3" - jiti "^1.18.2" + jiti "^1.19.1" lilconfig "^2.1.0" micromatch "^4.0.5" normalize-path "^3.0.0" @@ -13345,7 +12268,7 @@ tar-fs@^2.0.0, tar-fs@^2.1.1: pump "^3.0.0" tar-stream "^2.1.4" -tar-stream@^2.1.4: +tar-stream@^2.1.4, tar-stream@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -13356,20 +12279,19 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^4.4.12: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== +tar@6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" -tar@^6.0.2, tar@^6.1.0: +tar@^6.1.11, tar@^6.1.2: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== @@ -13381,22 +12303,11 @@ tar@^6.0.2, tar@^6.1.0: mkdirp "^1.0.3" yallist "^4.0.0" -temp-dir@^1.0.0: +temp-dir@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== -temp-write@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" - integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.3.2" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -13409,24 +12320,6 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser@^5.0.0, terser@^5.7.0: - version "5.22.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" - integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -13441,6 +12334,11 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-extensions@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" + integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -13460,15 +12358,10 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" - integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== - throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== + version "1.0.1" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5" + integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ== through2@^2.0.0: version "2.0.5" @@ -13495,14 +12388,6 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -tiny-glob@^0.2.8: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -13549,7 +12434,7 @@ toposort@^2.0.2: resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== -tough-cookie@^4.0.0, tough-cookie@^4.1.3: +tough-cookie@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -13559,26 +12444,23 @@ tough-cookie@^4.0.0, tough-cookie@^4.1.3: universalify "^0.2.0" url-parse "^1.5.3" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: - punycode "^2.1.1" + punycode "^2.1.0" tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -13600,33 +12482,33 @@ trough@^1.0.0: integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + version "1.2.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" + integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-jest@^27.1.5: - version "27.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" - integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== +ts-jest@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" + integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" lodash.memoize "4.x" make-error "1.x" - semver "7.x" - yargs-parser "20.x" + semver "^7.5.3" + yargs-parser "^21.0.1" -ts-node@^10.8.1, ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" @@ -13642,26 +12524,55 @@ ts-node@^10.8.1, ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^3.14.1, tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== +tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.2" minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1: +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tsup@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.0.2.tgz#c63192a08386515103e2c44ac5a23bdff75c5fa1" + integrity sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ== + dependencies: + bundle-require "^4.0.0" + cac "^6.7.12" + chokidar "^3.5.1" + debug "^4.3.1" + esbuild "^0.19.2" + execa "^5.0.0" + globby "^11.0.3" + joycon "^3.0.1" + postcss-load-config "^4.0.1" + resolve-from "^5.0.0" + rollup "^4.0.2" + source-map "0.8.0-beta.0" + sucrase "^3.20.3" + tree-kill "^1.2.2" + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -13669,6 +12580,24 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tuf-js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" + integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== + dependencies: + "@tufjs/models" "1.0.4" + debug "^4.3.4" + make-fetch-happen "^11.1.1" + +tuf-js@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.0.tgz#4daaa8620ba7545501d04dfa933c98abbcc959b9" + integrity sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg== + dependencies: + "@tufjs/models" "2.0.0" + debug "^4.3.4" + make-fetch-happen "^13.0.0" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -13681,47 +12610,47 @@ tunnel@^0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== -turbo-darwin-64@1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.10.15.tgz#8f1d80ca91e46909a2c80e416e475bc44c91ef9f" - integrity sha512-Sik5uogjkRTe1XVP9TC2GryEMOJCaKE2pM/O9uLn4koQDnWKGcLQv+mDU+H+9DXvKLnJnKCD18OVRkwK5tdpoA== - -turbo-darwin-arm64@1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.15.tgz#4b6b29c9d10c8e286b27d372936c09a98f34449a" - integrity sha512-xwqyFDYUcl2xwXyGPmHkmgnNm4Cy0oNzMpMOBGRr5x64SErS7QQLR4VHb0ubiR+VAb8M+ECPklU6vD1Gm+wekg== - -turbo-linux-64@1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.10.15.tgz#a892aae53946c68f311b2e71504af5b9768dd2c1" - integrity sha512-dM07SiO3RMAJ09Z+uB2LNUSkPp3I1IMF8goH5eLj+d8Kkwoxd/+qbUZOj9RvInyxU/IhlnO9w3PGd3Hp14m/nA== - -turbo-linux-arm64@1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.10.15.tgz#9d241414e75c7457ea8371c36c4b9700ec7ca553" - integrity sha512-MkzKLkKYKyrz4lwfjNXH8aTny5+Hmiu4SFBZbx+5C0vOlyp6fV5jZANDBvLXWiDDL4DSEAuCEK/2cmN6FVH1ow== - -turbo-windows-64@1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.10.15.tgz#7d19853634482f01b7c4ae8d5e255321a2f7582c" - integrity sha512-3TdVU+WEH9ThvQGwV3ieX/XHebtYNHv9HARHauPwmVj3kakoALkpGxLclkHFBLdLKkqDvmHmXtcsfs6cXXRHJg== - -turbo-windows-arm64@1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.10.15.tgz#c7b0cf8732b02914b415577593afeda4155219fb" - integrity sha512-l+7UOBCbfadvPMYsX08hyLD+UIoAkg6ojfH+E8aud3gcA1padpjCJTh9gMpm3QdMbKwZteT5uUM+wyi6Rbbyww== - -turbo@^1.10.15: - version "1.10.15" - resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.10.15.tgz#356731acb46991b4e337cce2f7ccd3279bc1f1a6" - integrity sha512-mKKkqsuDAQy1wCCIjCdG+jOCwUflhckDMSRoeBPcIL/CnCl7c5yRDFe7SyaXloUUkt4tUR0rvNIhVCcT7YeQpg== +turbo-darwin-64@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.12.4.tgz#c03061dcf3e9fb6e530b7c5be035e44627015af7" + integrity sha512-dBwFxhp9isTa9RS/fz2gDVk5wWhKQsPQMozYhjM7TT4jTrnYn0ZJMzr7V3B/M/T8QF65TbniW7w1gtgxQgX5Zg== + +turbo-darwin-arm64@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.12.4.tgz#5a10367004077fb7874717f4ddc47b2f66f74cfb" + integrity sha512-1Uo5iI6xsJ1j9ObsqxYRsa3W26mEbUe6fnj4rQYV6kDaqYD54oAMJ6hM53q9rB8JvFxwdrUXGp3PwTw9A0qqkA== + +turbo-linux-64@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.12.4.tgz#22af551b152634a162a13c4a14af28816b383fc9" + integrity sha512-ONg2aSqKP7LAQOg7ysmU5WpEQp4DGNxSlAiR7um+LKtbmC/UxogbR5+T+Uuq6zGuQ5kJyKjWJ4NhtvUswOqBsA== + +turbo-linux-arm64@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.12.4.tgz#f13fb4da0e9fd968ccc0b807df643913ee8fab50" + integrity sha512-9FPufkwdgfIKg/9jj87Cdtftw8o36y27/S2vLN7FTR2pp9c0MQiTBOLVYadUr1FlShupddmaMbTkXEhyt9SdrA== + +turbo-windows-64@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.12.4.tgz#9b72a5082f6db8f995f409226220982ee90661f7" + integrity sha512-2mOtxHW5Vjh/5rDVu/aFwsMzI+chs8XcEuJHlY1sYOpEymYTz+u6AXbnzRvwZFMrLKr7J7fQOGl+v96sLKbNdA== + +turbo-windows-arm64@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.12.4.tgz#e7058885e18705c625436acebcd66fda3dd506d5" + integrity sha512-nOY5wae9qnxPOpT1fRuYO0ks6dTwpKMPV6++VkDkamFDLFHUDVM/9kmD2UTeh1yyrKnrZksbb9zmShhmfj1wog== + +turbo@^1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.12.4.tgz#c3ba81871eba9ec87ac86af9e6270857726da9cb" + integrity sha512-yUJ7elEUSToiGwFZogXpYKJpQ0BvaMbkEuQECIWtkBLcmWzlMOt6bActsIm29oN83mRU0WbzGt4e8H1KHWedhg== optionalDependencies: - turbo-darwin-64 "1.10.15" - turbo-darwin-arm64 "1.10.15" - turbo-linux-64 "1.10.15" - turbo-linux-arm64 "1.10.15" - turbo-windows-64 "1.10.15" - turbo-windows-arm64 "1.10.15" + turbo-darwin-64 "1.12.4" + turbo-darwin-arm64 "1.12.4" + turbo-linux-64 "1.12.4" + turbo-linux-arm64 "1.12.4" + turbo-windows-64 "1.12.4" + turbo-windows-arm64 "1.12.4" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" @@ -13770,49 +12699,64 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^2.19.0: +type-fest@^2.17.0: version "2.19.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== +type-fest@^3.0.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +type-fest@^4.8.1: + version "4.10.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.10.2.tgz#3abdb144d93c5750432aac0d73d3e85fcab45738" + integrity sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw== + +typed-array-buffer@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - is-typed-array "^1.1.9" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -13821,41 +12765,21 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray-to-buffer@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" - integrity sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw== - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.1.3, typescript@^4.5.5, typescript@^4.9.3, typescript@^4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -"typescript@^4.6.4 || ^5.0.0": - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +"typescript@>=3 < 6", typescript@^5.2.2, typescript@^5.3.2, typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -13866,15 +12790,15 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== undici@^5.25.4: - version "5.26.4" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.26.4.tgz#dc861c35fb53ae025a173a790d984aa9b2e279a1" - integrity sha512-OG+QOf0fTLtazL9P9X7yqWxQ+Z0395Wk6DSkyTxtaq3wQEjIroVe7Y4asCX/vcCxYpNGMnwz8F0qbRYUoaQVMw== + version "5.28.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" + integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== dependencies: "@fastify/busboy" "^2.0.0" @@ -13933,12 +12857,12 @@ unified@^9.0.0, unified@^9.1.0: trough "^1.0.0" vfile "^4.0.0" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== dependencies: - unique-slug "^2.0.0" + unique-slug "^4.0.0" unique-random-array@1.0.0: version "1.0.0" @@ -13952,10 +12876,10 @@ unique-random@^1.0.0: resolved "https://registry.yarnpkg.com/unique-random/-/unique-random-1.0.0.tgz#ce3e224c8242cd33a0e77b0d7180d77e6b62d0c4" integrity sha512-K1sUkPf9EXCZFNIlMCoX4icAqcvkR4FMPH4Z61HbyiWhQl1ZGo0zYeV2bJmocK8Cp6tnKYrCnpkeKGebXZoRTQ== -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== dependencies: imurmurhash "^0.1.4" @@ -14032,9 +12956,9 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: unist-util-visit-parents "^3.0.0" universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + version "6.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" + integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== universalify@^0.1.0: version "0.1.2" @@ -14047,9 +12971,9 @@ universalify@^0.2.0: integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== untildify@^4.0.0: version "4.0.0" @@ -14061,7 +12985,7 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw== -upath@^2.0.1: +upath@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== @@ -14162,24 +13086,12 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA== - dependencies: - object.getownpropertydescriptors "^2.0.3" - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.1: +uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== @@ -14189,16 +13101,16 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" + convert-source-map "^2.0.0" -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -14206,6 +13118,13 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@5.0.0, validate-npm-package-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" + integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== + dependencies: + builtins "^5.0.0" + validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" @@ -14260,20 +13179,6 @@ vscode-textmate@^6.0.0: resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210" integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ== -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - wait-on@7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.0.1.tgz#5cff9f8427e94f4deacbc2762e6b0a489b19eae9" @@ -14285,7 +13190,7 @@ wait-on@7.0.1: minimist "^1.2.7" rxjs "^7.8.0" -walker@^1.0.7: +walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -14300,7 +13205,7 @@ watchpack@2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -wcwidth@^1.0.0: +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== @@ -14317,15 +13222,10 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-merge@^4.2.2: version "4.2.2" @@ -14334,22 +13234,10 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - whatwg-fetch@^3.4.1: - version "3.6.19" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" - integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== whatwg-url@^5.0.0: version "5.0.0" @@ -14359,14 +13247,14 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" which-boxed-primitive@^1.0.2: version "1.0.2" @@ -14412,18 +13300,18 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.1" -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14437,7 +13325,14 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -14463,6 +13358,15 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -14472,7 +13376,7 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== @@ -14481,20 +13385,37 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + write-file-atomic@^2.0.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -14504,7 +13425,7 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: +write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -14514,6 +13435,14 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -14526,19 +13455,7 @@ write-json-file@^3.2.0: sort-keys "^2.0.0" write-file-atomic "^2.4.2" -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@^4.0.0: +write-pkg@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== @@ -14547,11 +13464,6 @@ write-pkg@^4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" @@ -14562,46 +13474,11 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" - integrity sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw== - xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xtend@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" - integrity sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg== - dependencies: - is-object "~0.1.2" - object-keys "~0.2.0" - -xtend@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -xtend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" - integrity sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -14617,7 +13494,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -14627,25 +13504,15 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yaml@^2.0.0-1, yaml@^2.1.1, yaml@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" - integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== +yaml@2.3.4, yaml@^2.0.0-1, yaml@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== -yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs-parser@^15.0.1: version "15.0.3" @@ -14655,10 +13522,23 @@ yargs-parser@^15.0.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@17.7.2, yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" yargs@^14.2.3: version "14.2.3" @@ -14690,19 +13570,6 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.0, yargs@^17.5.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"